update
This commit is contained in:
parent
b9bb86d15c
commit
9e48a5d6e1
|
|
@ -0,0 +1,29 @@
|
||||||
|
stages:
|
||||||
|
- build
|
||||||
|
- deploy
|
||||||
|
|
||||||
|
build-dev:
|
||||||
|
stage: build
|
||||||
|
when: on_success
|
||||||
|
only:
|
||||||
|
- main
|
||||||
|
image: docker:stable
|
||||||
|
services:
|
||||||
|
- name: docker:dind
|
||||||
|
command: ["--insecure-registry=103.82.242.92:8900"]
|
||||||
|
script:
|
||||||
|
- docker logout
|
||||||
|
- docker login -u $DEPLOY_USERNAME -p $DEPLOY_TOKEN 103.82.242.92:8900
|
||||||
|
- docker build -t 103.82.242.92:8900/medols/web-milenial-bersuara:dev .
|
||||||
|
- docker push 103.82.242.92:8900/medols/web-milenial-bersuara:dev
|
||||||
|
|
||||||
|
auto-deploy:
|
||||||
|
stage: deploy
|
||||||
|
when: on_success
|
||||||
|
only:
|
||||||
|
- main
|
||||||
|
image: curlimages/curl:latest
|
||||||
|
services:
|
||||||
|
- docker:dind
|
||||||
|
script:
|
||||||
|
- curl --user admin:$JENKINS_PWD http://38.47.180.165:8080/job/auto-deploy-milenial-bersuara/build?token=autodeploymedols
|
||||||
|
|
@ -0,0 +1,36 @@
|
||||||
|
# Menggunakan image Node.js yang lebih ringan
|
||||||
|
FROM node:23.5.0-alpine
|
||||||
|
|
||||||
|
# Mengatur port
|
||||||
|
ENV PORT 3000
|
||||||
|
|
||||||
|
# Install pnpm secara global
|
||||||
|
RUN npm install -g pnpm
|
||||||
|
|
||||||
|
# Membuat direktori aplikasi dan mengatur sebagai working directory
|
||||||
|
WORKDIR /usr/src/app
|
||||||
|
|
||||||
|
# Menyalin file penting terlebih dahulu untuk caching
|
||||||
|
COPY package.json ./
|
||||||
|
|
||||||
|
# Menyalin direktori ckeditor5 jika diperlukan
|
||||||
|
COPY vendor/ckeditor5 ./vendor/ckeditor5
|
||||||
|
|
||||||
|
# Menyalin env
|
||||||
|
COPY .env .env
|
||||||
|
|
||||||
|
# Install dependencies
|
||||||
|
RUN pnpm install
|
||||||
|
# RUN pnpm install --frozen-lockfile
|
||||||
|
|
||||||
|
# Menyalin source code aplikasi
|
||||||
|
COPY . .
|
||||||
|
|
||||||
|
# Build aplikasi
|
||||||
|
RUN NODE_OPTIONS="--max-old-space-size=4096" pnpm next build
|
||||||
|
|
||||||
|
# Expose port untuk server
|
||||||
|
EXPOSE 3000
|
||||||
|
|
||||||
|
# Perintah untuk menjalankan aplikasi
|
||||||
|
CMD ["pnpm", "run", "start"]
|
||||||
|
|
@ -0,0 +1,18 @@
|
||||||
|
import Footer from "@/components/landing-page/footer";
|
||||||
|
import HeaderEkonomi from "@/components/landing-page/headers-economy";
|
||||||
|
import HeaderNarrative from "@/components/landing-page/headers-narrative";
|
||||||
|
import Navbar from "@/components/landing-page/navbar";
|
||||||
|
|
||||||
|
export default function DevelopmentPage() {
|
||||||
|
return (
|
||||||
|
<div className="relative min-h-screen font-[family-name:var(--font-geist-sans)]">
|
||||||
|
<div className="relative z-10 bg-[#F2F4F3] max-w-7xl mx-auto">
|
||||||
|
<Navbar />
|
||||||
|
<div className="flex-1">
|
||||||
|
<HeaderNarrative />
|
||||||
|
</div>
|
||||||
|
<Footer />
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,18 @@
|
||||||
|
import Footer from "@/components/landing-page/footer";
|
||||||
|
import HeaderEkonomi from "@/components/landing-page/headers-economy";
|
||||||
|
import HeaderHealth from "@/components/landing-page/headers-health";
|
||||||
|
import Navbar from "@/components/landing-page/navbar";
|
||||||
|
|
||||||
|
export default function HealthPage() {
|
||||||
|
return (
|
||||||
|
<div className="relative min-h-screen font-[family-name:var(--font-geist-sans)]">
|
||||||
|
<div className="relative z-10 bg-[#F2F4F3] max-w-7xl mx-auto">
|
||||||
|
<Navbar />
|
||||||
|
<div className="flex-1">
|
||||||
|
<HeaderHealth />
|
||||||
|
</div>
|
||||||
|
<Footer />
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,18 @@
|
||||||
|
import Footer from "@/components/landing-page/footer";
|
||||||
|
import HeaderEkonomi from "@/components/landing-page/headers-economy";
|
||||||
|
import HeaderHealth from "@/components/landing-page/headers-health";
|
||||||
|
import Navbar from "@/components/landing-page/navbar";
|
||||||
|
|
||||||
|
export default function PopularPage() {
|
||||||
|
return (
|
||||||
|
<div className="relative min-h-screen font-[family-name:var(--font-geist-sans)]">
|
||||||
|
<div className="relative z-10 bg-[#F2F4F3] max-w-7xl mx-auto">
|
||||||
|
<Navbar />
|
||||||
|
<div className="flex-1">
|
||||||
|
<HeaderHealth />
|
||||||
|
</div>
|
||||||
|
<Footer />
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,17 @@
|
||||||
|
import Footer from "@/components/landing-page/footer";
|
||||||
|
import HeaderEkonomi from "@/components/landing-page/headers-economy";
|
||||||
|
import Navbar from "@/components/landing-page/navbar";
|
||||||
|
|
||||||
|
export default function TravelPage() {
|
||||||
|
return (
|
||||||
|
<div className="relative min-h-screen font-[family-name:var(--font-geist-sans)]">
|
||||||
|
<div className="relative z-10 bg-[#F2F4F3] max-w-7xl mx-auto">
|
||||||
|
<Navbar />
|
||||||
|
<div className="flex-1">
|
||||||
|
<HeaderEkonomi />
|
||||||
|
</div>
|
||||||
|
<Footer />
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
@ -6,6 +6,7 @@ import { getArticleById, getListArticle } from "@/service/article";
|
||||||
import { close, loading } from "@/config/swal";
|
import { close, loading } from "@/config/swal";
|
||||||
import { useParams } from "next/navigation";
|
import { useParams } from "next/navigation";
|
||||||
import { CommentIcon } from "../icons/sidebar-icon";
|
import { CommentIcon } from "../icons/sidebar-icon";
|
||||||
|
import { Link2, MailIcon } from "lucide-react";
|
||||||
|
|
||||||
type TabKey = "trending" | "comments" | "latest";
|
type TabKey = "trending" | "comments" | "latest";
|
||||||
|
|
||||||
|
|
@ -21,7 +22,7 @@ type Article = {
|
||||||
title: string;
|
title: string;
|
||||||
}[];
|
}[];
|
||||||
files: {
|
files: {
|
||||||
file_url: string;
|
fileUrl: string;
|
||||||
file_alt: string;
|
file_alt: string;
|
||||||
}[];
|
}[];
|
||||||
};
|
};
|
||||||
|
|
@ -55,6 +56,7 @@ export default function DetailContent() {
|
||||||
const [selectedMainImage, setSelectedMainImage] = useState<number | null>(
|
const [selectedMainImage, setSelectedMainImage] = useState<number | null>(
|
||||||
null
|
null
|
||||||
);
|
);
|
||||||
|
const [selectedIndex, setSelectedIndex] = useState(0);
|
||||||
|
|
||||||
const [tabArticles, setTabArticles] = useState<Article[]>([]);
|
const [tabArticles, setTabArticles] = useState<Article[]>([]);
|
||||||
|
|
||||||
|
|
@ -151,6 +153,14 @@ export default function DetailContent() {
|
||||||
close();
|
close();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (!articleDetail?.files || articleDetail.files.length === 0) {
|
||||||
|
return (
|
||||||
|
<div className="w-full h-[400px] bg-gray-100 flex items-center justify-center rounded-lg">
|
||||||
|
<p className="text-gray-400 text-sm">Gambar tidak tersedia</p>
|
||||||
|
</div>
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<>
|
<>
|
||||||
<div className="bg-white grid grid-cols-1 md:grid-cols-3 gap-6 px-8 py-8">
|
<div className="bg-white grid grid-cols-1 md:grid-cols-3 gap-6 px-8 py-8">
|
||||||
|
|
@ -206,21 +216,40 @@ export default function DetailContent() {
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div className="w-full h-auto mb-6">
|
<div className="w-full h-auto mb-6">
|
||||||
{articleDetail?.files?.[0]?.file_url ? (
|
<div className="w-full">
|
||||||
<Image
|
<Image
|
||||||
src={articleDetail.files[0].file_url}
|
src={articleDetail.files[selectedIndex].fileUrl}
|
||||||
alt="Berita"
|
alt={articleDetail.files[selectedIndex].fileAlt || "Berita"}
|
||||||
width={800}
|
width={800}
|
||||||
height={400}
|
height={400}
|
||||||
className="rounded-lg w-full object-cover"
|
className="rounded-lg w-full object-cover"
|
||||||
/>
|
/>
|
||||||
) : (
|
</div>
|
||||||
<div className="w-full h-[400px] bg-gray-100 flex items-center justify-center rounded-lg">
|
|
||||||
<p className="text-gray-400 text-sm">Gambar tidak tersedia</p>
|
|
||||||
</div>
|
|
||||||
)}
|
|
||||||
|
|
||||||
<div className=" flex flex-row w-fit rounded overflow-hidden mr-5 gap-3">
|
{/* Thumbnail */}
|
||||||
|
<div className="flex gap-2 mt-3 overflow-x-auto">
|
||||||
|
{articleDetail.files.map((file: any, index: number) => (
|
||||||
|
<button
|
||||||
|
key={file.id || index}
|
||||||
|
onClick={() => setSelectedIndex(index)}
|
||||||
|
className={`border-2 rounded-lg overflow-hidden ${
|
||||||
|
selectedIndex === index
|
||||||
|
? "border-red-500"
|
||||||
|
: "border-transparent"
|
||||||
|
}`}
|
||||||
|
>
|
||||||
|
<Image
|
||||||
|
src={file.fileUrl}
|
||||||
|
alt={file.fileAlt || "Thumbnail"}
|
||||||
|
width={100}
|
||||||
|
height={80}
|
||||||
|
className="object-cover"
|
||||||
|
/>
|
||||||
|
</button>
|
||||||
|
))}
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div className=" flex flex-row w-fit rounded overflow-hidden mr-5 gap-3 mt-3">
|
||||||
<div className="flex flex-col items-center gap-2">
|
<div className="flex flex-col items-center gap-2">
|
||||||
<p className="text-red-500 font-semibold">0</p>
|
<p className="text-red-500 font-semibold">0</p>
|
||||||
<p className="text-red-500 font-semibold">SHARES</p>
|
<p className="text-red-500 font-semibold">SHARES</p>
|
||||||
|
|
@ -345,7 +374,47 @@ export default function DetailContent() {
|
||||||
|
|
||||||
{articleDetail?.description}
|
{articleDetail?.description}
|
||||||
</p>
|
</p>
|
||||||
|
<div className="w-full bg-white py-6">
|
||||||
|
<p className="mx-10 text-2xl mb-4 ">AUTHOR</p>
|
||||||
|
<div className=" border border-black p-6 flex items-center gap-6 max-w-[1200px] mx-auto">
|
||||||
|
{/* Foto Profil */}
|
||||||
|
<div className="w-20 h-20 relative ">
|
||||||
|
<Image
|
||||||
|
src="/profile.jpg"
|
||||||
|
alt="Author"
|
||||||
|
fill
|
||||||
|
className="rounded-full object-cover"
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
{/* Info Author */}
|
||||||
|
<div className="flex-1">
|
||||||
|
<h3 className="text-lg font-semibold text-gray-800">
|
||||||
|
{articleDetail?.createdByName}
|
||||||
|
</h3>
|
||||||
|
|
||||||
|
<div className="mt-2 flex items-center gap-4 flex-wrap">
|
||||||
|
{/* Button lihat semua post */}
|
||||||
|
<button className="text-sm font-medium text-black hover:underline bg-[#655997] py-1 px-5 rounded-xl">
|
||||||
|
Lihat Semua Pos
|
||||||
|
</button>
|
||||||
|
|
||||||
|
<div className="bg-[#655997] rounded-full p-1">
|
||||||
|
<MailIcon
|
||||||
|
size={18}
|
||||||
|
className="text-black hover:text-black cursor-pointer "
|
||||||
|
></MailIcon>
|
||||||
|
</div>
|
||||||
|
<div className="bg-[#655997] rounded-full p-1">
|
||||||
|
<Link2
|
||||||
|
size={18}
|
||||||
|
className="text-black hover:text-black cursor-pointer "
|
||||||
|
></Link2>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
<div className="flex flex-row gap-2 items-center">
|
<div className="flex flex-row gap-2 items-center">
|
||||||
<span className="font-semibold text-sm text-gray-700">
|
<span className="font-semibold text-sm text-gray-700">
|
||||||
Tags:
|
Tags:
|
||||||
|
|
|
||||||
|
|
@ -614,9 +614,7 @@ export default function EditArticleForm(props: { isDetail: boolean }) {
|
||||||
alt="main"
|
alt="main"
|
||||||
width={720}
|
width={720}
|
||||||
height={480}
|
height={480}
|
||||||
src={
|
src={detailfiles[mainImage]?.fileUrl || "/default-avatar.png"}
|
||||||
detailfiles[mainImage]?.file_url || "/default-avatar.png"
|
|
||||||
}
|
|
||||||
className="w-[75%] mx-auto"
|
className="w-[75%] mx-auto"
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
|
|
@ -631,7 +629,7 @@ export default function EditArticleForm(props: { isDetail: boolean }) {
|
||||||
width={480}
|
width={480}
|
||||||
height={360}
|
height={360}
|
||||||
alt={`image-${index}`}
|
alt={`image-${index}`}
|
||||||
src={file.file_url || "/default-avatar.png"}
|
src={file.fileUrl || "/default-avatar.png"}
|
||||||
className="h-[100px] object-cover w-[150px]"
|
className="h-[100px] object-cover w-[150px]"
|
||||||
/>
|
/>
|
||||||
</a>
|
</a>
|
||||||
|
|
@ -654,7 +652,7 @@ export default function EditArticleForm(props: { isDetail: boolean }) {
|
||||||
width={480}
|
width={480}
|
||||||
height={360}
|
height={360}
|
||||||
alt={`image-${index}`}
|
alt={`image-${index}`}
|
||||||
src={file?.file_url || "/default-avatar.png"}
|
src={file?.fileUrl || "/default-avatar.png"}
|
||||||
className="h-[100px] object-cover w-[150px]"
|
className="h-[100px] object-cover w-[150px]"
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,201 @@
|
||||||
|
"use client";
|
||||||
|
|
||||||
|
import { useEffect, useState } from "react";
|
||||||
|
import Image from "next/image";
|
||||||
|
import Link from "next/link";
|
||||||
|
import { getListArticle } from "@/service/article";
|
||||||
|
|
||||||
|
type Article = {
|
||||||
|
id: number;
|
||||||
|
title: string;
|
||||||
|
description: string;
|
||||||
|
categoryName: string;
|
||||||
|
createdAt: string;
|
||||||
|
createdByName: string;
|
||||||
|
thumbnailUrl: string;
|
||||||
|
categories: { title: string }[];
|
||||||
|
files: { fileUrl: string; file_alt: string }[];
|
||||||
|
};
|
||||||
|
|
||||||
|
export default function HeaderEkonomi() {
|
||||||
|
const [articles, setArticles] = useState<Article[]>([]);
|
||||||
|
const [page, setPage] = useState(1);
|
||||||
|
const [totalPage, setTotalPage] = useState(1);
|
||||||
|
const [showData, setShowData] = useState("5");
|
||||||
|
const [search, setSearch] = useState("");
|
||||||
|
const [selectedCategories, setSelectedCategories] = useState<any>([]);
|
||||||
|
const [startDateValue, setStartDateValue] = useState({
|
||||||
|
startDate: null,
|
||||||
|
endDate: null,
|
||||||
|
});
|
||||||
|
|
||||||
|
useEffect(() => {
|
||||||
|
initState();
|
||||||
|
}, [page, showData, startDateValue, selectedCategories]);
|
||||||
|
|
||||||
|
async function initState() {
|
||||||
|
const req = {
|
||||||
|
limit: showData,
|
||||||
|
page,
|
||||||
|
search,
|
||||||
|
categorySlug: Array.from(selectedCategories).join(","),
|
||||||
|
sort: "desc",
|
||||||
|
isPublish: true,
|
||||||
|
sortBy: "created_at",
|
||||||
|
};
|
||||||
|
|
||||||
|
try {
|
||||||
|
const res = await getListArticle(req);
|
||||||
|
setArticles(res?.data?.data || []);
|
||||||
|
setTotalPage(res?.data?.meta?.totalPage || 1);
|
||||||
|
} catch (error) {
|
||||||
|
console.error("Gagal memuat artikel:", error);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (articles.length === 0) return null;
|
||||||
|
|
||||||
|
const featuredArticle = articles[0];
|
||||||
|
const recentPosts = articles.slice(1, 5); // Ambil 4 artikel berikutnya
|
||||||
|
|
||||||
|
return (
|
||||||
|
<section className="py-16 px-6 bg-white">
|
||||||
|
<div className="max-w-7xl mx-auto">
|
||||||
|
<h2 className="text-3xl font-bold text-center">Travel News</h2>
|
||||||
|
{/* <p className="text-center text-gray-500 mt-2 mb-10">
|
||||||
|
Kolom ini berisi berita-berita yang saat ini sedang menjadi sorotan
|
||||||
|
atau terkait dengan Ekonomi.
|
||||||
|
</p> */}
|
||||||
|
|
||||||
|
<div className="grid grid-cols-1 md:grid-cols-3 gap-10">
|
||||||
|
<div className="md:col-span-2 overflow-y-auto max-h-[1400px] pr-2">
|
||||||
|
<div className="grid grid-cols-1 md:grid-cols-2 gap-6">
|
||||||
|
{articles.map((article) => (
|
||||||
|
<div key={article.id}>
|
||||||
|
<Link href={`/detail/${article.id}`}>
|
||||||
|
<Image
|
||||||
|
src={article.thumbnailUrl || "/default.jpg"}
|
||||||
|
alt={article.title}
|
||||||
|
width={600}
|
||||||
|
height={400}
|
||||||
|
className="w-full h-[250px] object-cover rounded-md"
|
||||||
|
/>
|
||||||
|
<p className="text-xs font-semibold text-yellow-600 mt-4 uppercase">
|
||||||
|
{article.categories?.[0]?.title ||
|
||||||
|
article.categoryName ||
|
||||||
|
"BERITA"}
|
||||||
|
</p>
|
||||||
|
<h3 className="text-lg font-bold mt-1">{article.title}</h3>
|
||||||
|
<p className="text-sm text-gray-600 mt-2">
|
||||||
|
{article.description.split(" ").slice(0, 20).join(" ") +
|
||||||
|
"..."}
|
||||||
|
</p>
|
||||||
|
<p className="text-sm text-gray-700 mt-4">
|
||||||
|
By <strong>{article.createdByName}</strong> —{" "}
|
||||||
|
{new Date(article.createdAt).toLocaleDateString("en-US", {
|
||||||
|
month: "long",
|
||||||
|
day: "numeric",
|
||||||
|
year: "numeric",
|
||||||
|
})}
|
||||||
|
</p>
|
||||||
|
<Link
|
||||||
|
href={`/detail/${article.id}`}
|
||||||
|
className="mt-2 inline-block text-sm text-yellow-600 font-semibold hover:underline"
|
||||||
|
>
|
||||||
|
READ MORE >
|
||||||
|
</Link>
|
||||||
|
</Link>
|
||||||
|
</div>
|
||||||
|
))}
|
||||||
|
</div>
|
||||||
|
|
||||||
|
{/* <div className="flex justify-end mt-10 gap-2">
|
||||||
|
{Array.from({ length: totalPage }).map((_, i) => (
|
||||||
|
<button
|
||||||
|
key={i}
|
||||||
|
onClick={() => setPage(i + 1)}
|
||||||
|
className={`w-9 h-9 rounded-full border border-gray-300 text-sm ${
|
||||||
|
page === i + 1
|
||||||
|
? "bg-yellow-400 text-white font-bold"
|
||||||
|
: "text-gray-700 hover:bg-gray-200"
|
||||||
|
}`}
|
||||||
|
>
|
||||||
|
{i + 1}
|
||||||
|
</button>
|
||||||
|
))}
|
||||||
|
</div> */}
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div className="space-y-6 sticky top-28 h-fit">
|
||||||
|
<h4 className="text-xl font-bold">Recent Posts</h4>
|
||||||
|
{recentPosts.map((post, index) => (
|
||||||
|
<div key={post.id}>
|
||||||
|
<Link className="flex gap-3" href={`/detail/${post.id}`}>
|
||||||
|
<Image
|
||||||
|
src={post.thumbnailUrl || "/default.jpg"}
|
||||||
|
alt={post.title}
|
||||||
|
width={80}
|
||||||
|
height={80}
|
||||||
|
className="w-20 h-20 object-cover rounded-md"
|
||||||
|
/>
|
||||||
|
<div className="flex-1">
|
||||||
|
<p className="text-xs font-semibold text-yellow-600 uppercase">
|
||||||
|
{post.categories?.[0]?.title ||
|
||||||
|
post.categoryName ||
|
||||||
|
"BERITA"}
|
||||||
|
</p>
|
||||||
|
<h5 className="text-sm font-semibold leading-snug">
|
||||||
|
{post.title}
|
||||||
|
</h5>
|
||||||
|
<p className="text-xs text-gray-500 mt-1">
|
||||||
|
{new Date(post.createdAt).toLocaleDateString("en-US", {
|
||||||
|
month: "long",
|
||||||
|
day: "numeric",
|
||||||
|
year: "numeric",
|
||||||
|
})}
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
<div className="text-3xl font-bold text-yellow-300 leading-none">
|
||||||
|
{String(index + 1).padStart(2, "0")}
|
||||||
|
</div>
|
||||||
|
</Link>
|
||||||
|
</div>
|
||||||
|
))}
|
||||||
|
<div className="relative max-w-full h-[300px] overflow-hidden flex items-center mx-auto my-6 rounded">
|
||||||
|
<Image
|
||||||
|
src="/earphone.png"
|
||||||
|
alt="Berita Utama"
|
||||||
|
fill
|
||||||
|
className="object-contain rounded"
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
<div className="border rounded-md p-4 space-y-4">
|
||||||
|
<h4 className="text-lg font-semibold">
|
||||||
|
Subscribe us to get the latest news!
|
||||||
|
</h4>
|
||||||
|
|
||||||
|
<div>
|
||||||
|
<label
|
||||||
|
htmlFor="email"
|
||||||
|
className="block text-xs font-semibold text-gray-600 mb-1"
|
||||||
|
>
|
||||||
|
Email address:
|
||||||
|
</label>
|
||||||
|
<input
|
||||||
|
id="email"
|
||||||
|
type="email"
|
||||||
|
placeholder="Your email address"
|
||||||
|
className="w-full border rounded px-3 py-2 text-sm focus:outline-none focus:ring-2 focus:ring-yellow-400"
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<button className="w-full bg-yellow-400 hover:bg-yellow-500 text-white font-semibold py-2 rounded transition">
|
||||||
|
SIGN UP
|
||||||
|
</button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,200 @@
|
||||||
|
"use client";
|
||||||
|
|
||||||
|
import { useEffect, useState } from "react";
|
||||||
|
import Image from "next/image";
|
||||||
|
import Link from "next/link";
|
||||||
|
import { getListArticle } from "@/service/article";
|
||||||
|
|
||||||
|
type Article = {
|
||||||
|
id: number;
|
||||||
|
title: string;
|
||||||
|
description: string;
|
||||||
|
categoryName: string;
|
||||||
|
createdAt: string;
|
||||||
|
createdByName: string;
|
||||||
|
thumbnailUrl: string;
|
||||||
|
categories: { title: string }[];
|
||||||
|
files: { fileUrl: string; file_alt: string }[];
|
||||||
|
};
|
||||||
|
|
||||||
|
export default function HeaderHealth() {
|
||||||
|
const [articles, setArticles] = useState<Article[]>([]);
|
||||||
|
const [page, setPage] = useState(1);
|
||||||
|
const [totalPage, setTotalPage] = useState(1);
|
||||||
|
const [showData, setShowData] = useState("5");
|
||||||
|
const [search, setSearch] = useState("");
|
||||||
|
const [selectedCategories, setSelectedCategories] = useState<any>([]);
|
||||||
|
const [startDateValue, setStartDateValue] = useState({
|
||||||
|
startDate: null,
|
||||||
|
endDate: null,
|
||||||
|
});
|
||||||
|
|
||||||
|
useEffect(() => {
|
||||||
|
initState();
|
||||||
|
}, [page, showData, startDateValue, selectedCategories]);
|
||||||
|
|
||||||
|
async function initState() {
|
||||||
|
const req = {
|
||||||
|
limit: showData,
|
||||||
|
page,
|
||||||
|
search,
|
||||||
|
categorySlug: Array.from(selectedCategories).join(","),
|
||||||
|
sort: "desc",
|
||||||
|
isPublish: true,
|
||||||
|
sortBy: "created_at",
|
||||||
|
};
|
||||||
|
|
||||||
|
try {
|
||||||
|
const res = await getListArticle(req);
|
||||||
|
setArticles(res?.data?.data || []);
|
||||||
|
setTotalPage(res?.data?.meta?.totalPage || 1);
|
||||||
|
} catch (error) {
|
||||||
|
console.error("Gagal memuat artikel:", error);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (articles.length === 0) return null;
|
||||||
|
|
||||||
|
const featuredArticle = articles[0];
|
||||||
|
const recentPosts = articles.slice(1, 5); // Ambil 4 artikel berikutnya
|
||||||
|
|
||||||
|
return (
|
||||||
|
<section className="py-16 px-6 bg-white">
|
||||||
|
<div className="max-w-7xl mx-auto">
|
||||||
|
<h2 className="text-3xl font-bold text-center">Destination</h2>
|
||||||
|
{/* <p className="text-center text-gray-500 mt-2 mb-10">
|
||||||
|
Mengawasi Kesehatan dan Kedaulatan Bangsa
|
||||||
|
</p> */}
|
||||||
|
|
||||||
|
<div className="grid grid-cols-1 md:grid-cols-3 gap-10">
|
||||||
|
<div className="md:col-span-2 overflow-y-auto max-h-[1400px] pr-2">
|
||||||
|
<div className="grid grid-cols-1 md:grid-cols-2 gap-6">
|
||||||
|
{articles.map((article) => (
|
||||||
|
<div key={article.id}>
|
||||||
|
<Link href={`/detail/${article.id}`}>
|
||||||
|
<Image
|
||||||
|
src={article.thumbnailUrl || "/default.jpg"}
|
||||||
|
alt={article.title}
|
||||||
|
width={600}
|
||||||
|
height={400}
|
||||||
|
className="w-full h-[250px] object-cover rounded-md"
|
||||||
|
/>
|
||||||
|
<p className="text-xs font-semibold text-yellow-600 mt-4 uppercase">
|
||||||
|
{article.categories?.[0]?.title ||
|
||||||
|
article.categoryName ||
|
||||||
|
"BERITA"}
|
||||||
|
</p>
|
||||||
|
<h3 className="text-lg font-bold mt-1">{article.title}</h3>
|
||||||
|
<p className="text-sm text-gray-600 mt-2">
|
||||||
|
{article.description.split(" ").slice(0, 20).join(" ") +
|
||||||
|
"..."}
|
||||||
|
</p>
|
||||||
|
<p className="text-sm text-gray-700 mt-4">
|
||||||
|
By <strong>{article.createdByName}</strong> —{" "}
|
||||||
|
{new Date(article.createdAt).toLocaleDateString("en-US", {
|
||||||
|
month: "long",
|
||||||
|
day: "numeric",
|
||||||
|
year: "numeric",
|
||||||
|
})}
|
||||||
|
</p>
|
||||||
|
<Link
|
||||||
|
href={`/detail/${article.id}`}
|
||||||
|
className="mt-2 inline-block text-sm text-yellow-600 font-semibold hover:underline"
|
||||||
|
>
|
||||||
|
READ MORE >
|
||||||
|
</Link>
|
||||||
|
</Link>
|
||||||
|
</div>
|
||||||
|
))}
|
||||||
|
</div>
|
||||||
|
|
||||||
|
{/* <div className="flex justify-end mt-10 gap-2">
|
||||||
|
{Array.from({ length: totalPage }).map((_, i) => (
|
||||||
|
<button
|
||||||
|
key={i}
|
||||||
|
onClick={() => setPage(i + 1)}
|
||||||
|
className={`w-9 h-9 rounded-full border border-gray-300 text-sm ${
|
||||||
|
page === i + 1
|
||||||
|
? "bg-yellow-400 text-white font-bold"
|
||||||
|
: "text-gray-700 hover:bg-gray-200"
|
||||||
|
}`}
|
||||||
|
>
|
||||||
|
{i + 1}
|
||||||
|
</button>
|
||||||
|
))}
|
||||||
|
</div> */}
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div className="space-y-6 sticky top-28 h-fit">
|
||||||
|
<h4 className="text-xl font-bold">Recent Posts</h4>
|
||||||
|
{recentPosts.map((post, index) => (
|
||||||
|
<div key={post.id}>
|
||||||
|
<Link className="flex gap-3" href={`/detail/${post.id}`}>
|
||||||
|
<Image
|
||||||
|
src={post.thumbnailUrl || "/default.jpg"}
|
||||||
|
alt={post.title}
|
||||||
|
width={80}
|
||||||
|
height={80}
|
||||||
|
className="w-20 h-20 object-cover rounded-md"
|
||||||
|
/>
|
||||||
|
<div className="flex-1">
|
||||||
|
<p className="text-xs font-semibold text-yellow-600 uppercase">
|
||||||
|
{post.categories?.[0]?.title ||
|
||||||
|
post.categoryName ||
|
||||||
|
"BERITA"}
|
||||||
|
</p>
|
||||||
|
<h5 className="text-sm font-semibold leading-snug">
|
||||||
|
{post.title}
|
||||||
|
</h5>
|
||||||
|
<p className="text-xs text-gray-500 mt-1">
|
||||||
|
{new Date(post.createdAt).toLocaleDateString("en-US", {
|
||||||
|
month: "long",
|
||||||
|
day: "numeric",
|
||||||
|
year: "numeric",
|
||||||
|
})}
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
<div className="text-3xl font-bold text-yellow-300 leading-none">
|
||||||
|
{String(index + 1).padStart(2, "0")}
|
||||||
|
</div>
|
||||||
|
</Link>
|
||||||
|
</div>
|
||||||
|
))}
|
||||||
|
<div className="relative max-w-full h-[300px] overflow-hidden flex items-center mx-auto my-6 rounded">
|
||||||
|
<Image
|
||||||
|
src="/earphone.png"
|
||||||
|
alt="Berita Utama"
|
||||||
|
fill
|
||||||
|
className="object-contain rounded"
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
<div className="border rounded-md p-4 space-y-4">
|
||||||
|
<h4 className="text-lg font-semibold">
|
||||||
|
Subscribe us to get the latest news!
|
||||||
|
</h4>
|
||||||
|
|
||||||
|
<div>
|
||||||
|
<label
|
||||||
|
htmlFor="email"
|
||||||
|
className="block text-xs font-semibold text-gray-600 mb-1"
|
||||||
|
>
|
||||||
|
Email address:
|
||||||
|
</label>
|
||||||
|
<input
|
||||||
|
id="email"
|
||||||
|
type="email"
|
||||||
|
placeholder="Your email address"
|
||||||
|
className="w-full border rounded px-3 py-2 text-sm focus:outline-none focus:ring-2 focus:ring-yellow-400"
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<button className="w-full bg-yellow-400 hover:bg-yellow-500 text-white font-semibold py-2 rounded transition">
|
||||||
|
SIGN UP
|
||||||
|
</button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,200 @@
|
||||||
|
"use client";
|
||||||
|
|
||||||
|
import { useEffect, useState } from "react";
|
||||||
|
import Image from "next/image";
|
||||||
|
import Link from "next/link";
|
||||||
|
import { getListArticle } from "@/service/article";
|
||||||
|
|
||||||
|
type Article = {
|
||||||
|
id: number;
|
||||||
|
title: string;
|
||||||
|
description: string;
|
||||||
|
categoryName: string;
|
||||||
|
createdAt: string;
|
||||||
|
createdByName: string;
|
||||||
|
thumbnailUrl: string;
|
||||||
|
categories: { title: string }[];
|
||||||
|
files: { fileUrl: string; file_alt: string }[];
|
||||||
|
};
|
||||||
|
|
||||||
|
export default function HeaderNarrative() {
|
||||||
|
const [articles, setArticles] = useState<Article[]>([]);
|
||||||
|
const [page, setPage] = useState(1);
|
||||||
|
const [totalPage, setTotalPage] = useState(1);
|
||||||
|
const [showData, setShowData] = useState("10");
|
||||||
|
const [search, setSearch] = useState("");
|
||||||
|
const [selectedCategories, setSelectedCategories] = useState<any>([]);
|
||||||
|
const [startDateValue, setStartDateValue] = useState({
|
||||||
|
startDate: null,
|
||||||
|
endDate: null,
|
||||||
|
});
|
||||||
|
|
||||||
|
useEffect(() => {
|
||||||
|
initState();
|
||||||
|
}, [page, showData, startDateValue, selectedCategories]);
|
||||||
|
|
||||||
|
async function initState() {
|
||||||
|
const req = {
|
||||||
|
limit: showData,
|
||||||
|
page,
|
||||||
|
search,
|
||||||
|
categorySlug: Array.from(selectedCategories).join(","),
|
||||||
|
sort: "desc",
|
||||||
|
isPublish: true,
|
||||||
|
sortBy: "created_at",
|
||||||
|
};
|
||||||
|
|
||||||
|
try {
|
||||||
|
const res = await getListArticle(req);
|
||||||
|
setArticles(res?.data?.data || []);
|
||||||
|
setTotalPage(res?.data?.meta?.totalPage || 1);
|
||||||
|
} catch (error) {
|
||||||
|
console.error("Gagal memuat artikel:", error);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (articles.length === 0) return null;
|
||||||
|
|
||||||
|
const recentPosts = articles.slice(0, 5);
|
||||||
|
|
||||||
|
return (
|
||||||
|
<section className="py-16 px-6 bg-white">
|
||||||
|
<div className="max-w-7xl mx-auto">
|
||||||
|
<h2 className="text-3xl font-bold text-center">Travel Ideas</h2>
|
||||||
|
{/* <p className="text-center text-gray-500 mt-2 mb-10">
|
||||||
|
Berita Narasi Ahli, analisis, dan pandangan para penulis atau pakar
|
||||||
|
dalam berbagai bidang
|
||||||
|
</p> */}
|
||||||
|
|
||||||
|
<div className="grid grid-cols-1 md:grid-cols-3 gap-10">
|
||||||
|
<div className="md:col-span-2 overflow-y-auto max-h-[1400px] pr-2">
|
||||||
|
<div className="grid grid-cols-1 md:grid-cols-2 gap-6">
|
||||||
|
{articles.map((article) => (
|
||||||
|
<div key={article.id}>
|
||||||
|
<Link href={`/detail/${article.id}`}>
|
||||||
|
<Image
|
||||||
|
src={article.thumbnailUrl || "/default.jpg"}
|
||||||
|
alt={article.title}
|
||||||
|
width={600}
|
||||||
|
height={400}
|
||||||
|
className="w-full h-[250px] object-cover rounded-md"
|
||||||
|
/>
|
||||||
|
<p className="text-xs font-semibold text-yellow-600 mt-4 uppercase">
|
||||||
|
{article.categories?.[0]?.title ||
|
||||||
|
article.categoryName ||
|
||||||
|
"BERITA"}
|
||||||
|
</p>
|
||||||
|
<h3 className="text-lg font-bold mt-1">{article.title}</h3>
|
||||||
|
<p className="text-sm text-gray-600 mt-2">
|
||||||
|
{article.description.split(" ").slice(0, 20).join(" ") +
|
||||||
|
"..."}
|
||||||
|
</p>
|
||||||
|
<p className="text-sm text-gray-700 mt-4">
|
||||||
|
By <strong>{article.createdByName}</strong> —{" "}
|
||||||
|
{new Date(article.createdAt).toLocaleDateString("en-US", {
|
||||||
|
month: "long",
|
||||||
|
day: "numeric",
|
||||||
|
year: "numeric",
|
||||||
|
})}
|
||||||
|
</p>
|
||||||
|
<Link
|
||||||
|
href={`/detail/${article.id}`}
|
||||||
|
className="mt-2 inline-block text-sm text-yellow-600 font-semibold hover:underline"
|
||||||
|
>
|
||||||
|
READ MORE >
|
||||||
|
</Link>
|
||||||
|
</Link>
|
||||||
|
</div>
|
||||||
|
))}
|
||||||
|
</div>
|
||||||
|
|
||||||
|
{/* <div className="flex justify-end mt-10 gap-2">
|
||||||
|
{Array.from({ length: totalPage }).map((_, i) => (
|
||||||
|
<button
|
||||||
|
key={i}
|
||||||
|
onClick={() => setPage(i + 1)}
|
||||||
|
className={`w-9 h-9 rounded-full border border-gray-300 text-sm ${
|
||||||
|
page === i + 1
|
||||||
|
? "bg-yellow-400 text-white font-bold"
|
||||||
|
: "text-gray-700 hover:bg-gray-200"
|
||||||
|
}`}
|
||||||
|
>
|
||||||
|
{i + 1}
|
||||||
|
</button>
|
||||||
|
))}
|
||||||
|
</div> */}
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div className="space-y-6 sticky top-28 h-fit">
|
||||||
|
<h4 className="text-xl font-bold">Recent Posts</h4>
|
||||||
|
{recentPosts.map((post, index) => (
|
||||||
|
<div key={post.id}>
|
||||||
|
<Link className="flex gap-3" href={`/detail/${post.id}`}>
|
||||||
|
<Image
|
||||||
|
src={post.thumbnailUrl || "/default.jpg"}
|
||||||
|
alt={post.title}
|
||||||
|
width={80}
|
||||||
|
height={80}
|
||||||
|
className="w-20 h-20 object-cover rounded-md"
|
||||||
|
/>
|
||||||
|
<div className="flex-1">
|
||||||
|
<p className="text-xs font-semibold text-yellow-600 uppercase">
|
||||||
|
{post.categories?.[0]?.title ||
|
||||||
|
post.categoryName ||
|
||||||
|
"BERITA"}
|
||||||
|
</p>
|
||||||
|
<h5 className="text-sm font-semibold leading-snug">
|
||||||
|
{post.title}
|
||||||
|
</h5>
|
||||||
|
<p className="text-xs text-gray-500 mt-1">
|
||||||
|
{new Date(post.createdAt).toLocaleDateString("en-US", {
|
||||||
|
month: "long",
|
||||||
|
day: "numeric",
|
||||||
|
year: "numeric",
|
||||||
|
})}
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
<div className="text-3xl font-bold text-yellow-300 leading-none">
|
||||||
|
{String(index + 1).padStart(2, "0")}
|
||||||
|
</div>
|
||||||
|
</Link>
|
||||||
|
</div>
|
||||||
|
))}
|
||||||
|
<div className="relative max-w-full h-[300px] overflow-hidden flex items-center mx-auto my-6 rounded">
|
||||||
|
<Image
|
||||||
|
src="/earphone.png"
|
||||||
|
alt="Berita Utama"
|
||||||
|
fill
|
||||||
|
className="object-contain rounded"
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
<div className="border rounded-md p-4 space-y-4">
|
||||||
|
<h4 className="text-lg font-semibold">
|
||||||
|
Subscribe us to get the latest news!
|
||||||
|
</h4>
|
||||||
|
|
||||||
|
<div>
|
||||||
|
<label
|
||||||
|
htmlFor="email"
|
||||||
|
className="block text-xs font-semibold text-gray-600 mb-1"
|
||||||
|
>
|
||||||
|
Email address:
|
||||||
|
</label>
|
||||||
|
<input
|
||||||
|
id="email"
|
||||||
|
type="email"
|
||||||
|
placeholder="Your email address"
|
||||||
|
className="w-full border rounded px-3 py-2 text-sm focus:outline-none focus:ring-2 focus:ring-yellow-400"
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<button className="w-full bg-yellow-400 hover:bg-yellow-500 text-white font-semibold py-2 rounded transition">
|
||||||
|
SIGN UP
|
||||||
|
</button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
@ -18,7 +18,7 @@ type Article = {
|
||||||
title: string;
|
title: string;
|
||||||
}[];
|
}[];
|
||||||
files: {
|
files: {
|
||||||
file_url: string;
|
fileUrl: string;
|
||||||
file_alt: string;
|
file_alt: string;
|
||||||
}[];
|
}[];
|
||||||
};
|
};
|
||||||
|
|
|
||||||
|
|
@ -17,7 +17,7 @@ type Article = {
|
||||||
title: string;
|
title: string;
|
||||||
}[];
|
}[];
|
||||||
files: {
|
files: {
|
||||||
file_url: string;
|
fileUrl: string;
|
||||||
file_alt: string;
|
file_alt: string;
|
||||||
}[];
|
}[];
|
||||||
};
|
};
|
||||||
|
|
|
||||||
|
|
@ -42,21 +42,18 @@ export default function Navbar() {
|
||||||
<Link href="/" className="hover:text-teal-400">
|
<Link href="/" className="hover:text-teal-400">
|
||||||
HOME
|
HOME
|
||||||
</Link>
|
</Link>
|
||||||
<Link href="/travel-news" className="hover:text-teal-400">
|
<Link href="/category/travel-news" className="hover:text-teal-400">
|
||||||
TRAVEL NEWS
|
TRAVEL NEWS
|
||||||
</Link>
|
</Link>
|
||||||
<Link href="/destination" className="hover:text-teal-400">
|
<Link href="/category/health" className="hover:text-teal-400">
|
||||||
DESTINATION
|
DESTINATION
|
||||||
</Link>
|
</Link>
|
||||||
<Link href="/travel-ideas" className="hover:text-teal-400">
|
<Link href="/category/development" className="hover:text-teal-400">
|
||||||
TRAVEL IDEAS
|
TRAVEL IDEAS
|
||||||
</Link>
|
</Link>
|
||||||
<Link href="/food-drink" className="hover:text-teal-400">
|
{/* <Link href="/category/popular" className="hover:text-teal-400">
|
||||||
FOOD & DRINK
|
FOOD & DRINK
|
||||||
</Link>
|
</Link> */}
|
||||||
<Link href="/video" className="hover:text-teal-400">
|
|
||||||
VIDEO
|
|
||||||
</Link>
|
|
||||||
</nav>
|
</nav>
|
||||||
|
|
||||||
{/* Icons */}
|
{/* Icons */}
|
||||||
|
|
|
||||||
|
|
@ -179,7 +179,7 @@ type Article = {
|
||||||
title: string;
|
title: string;
|
||||||
}[];
|
}[];
|
||||||
files: {
|
files: {
|
||||||
file_url: string;
|
fileUrl: string;
|
||||||
file_alt: string;
|
file_alt: string;
|
||||||
}[];
|
}[];
|
||||||
};
|
};
|
||||||
|
|
@ -472,35 +472,36 @@ export default function News() {
|
||||||
key={post.id}
|
key={post.id}
|
||||||
className="flex flex-col md:flex-row border-b border-gray-200 pb-6"
|
className="flex flex-col md:flex-row border-b border-gray-200 pb-6"
|
||||||
>
|
>
|
||||||
{/* Left Content */}
|
<Link href={`/detail/${post?.id}`}>
|
||||||
<div className="flex-1 pr-0 md:pr-6">
|
{/* Left Content */}
|
||||||
<h2 className="text-xl md:text-2xl font-bold mb-2">
|
<div className="flex-1 pr-0 md:pr-6">
|
||||||
{post.title}
|
<h2 className="text-xl md:text-2xl font-bold mb-2">
|
||||||
</h2>
|
{post.title}
|
||||||
<div className="flex items-center text-sm text-gray-500 gap-2 mb-3">
|
</h2>
|
||||||
<span>
|
<div className="flex items-center text-sm text-gray-500 gap-2 mb-3">
|
||||||
BY{" "}
|
<span>
|
||||||
<span className="text-[#49C5C4] font-semibold uppercase">
|
BY{" "}
|
||||||
{post.createdByName}
|
<span className="text-[#49C5C4] font-semibold uppercase">
|
||||||
|
{post.createdByName}
|
||||||
|
</span>
|
||||||
</span>
|
</span>
|
||||||
</span>
|
<span>•</span>
|
||||||
<span>•</span>
|
<span>{post.createdAt}</span>
|
||||||
<span>{post.createdAt}</span>
|
<span>•</span>
|
||||||
<span>•</span>
|
<MessageCircle size={14} className="text-[#49C5C4]" />
|
||||||
<MessageCircle size={14} className="text-[#49C5C4]" />
|
<span>{/* {post.comments} */}0</span>
|
||||||
<span>{/* {post.comments} */}0</span>
|
</div>
|
||||||
|
<p className="text-gray-600 mb-4">
|
||||||
|
{post.description.split(" ").slice(0, 50).join(" ")}
|
||||||
|
{post.description.split(" ").length > 50 && "..."}
|
||||||
|
</p>
|
||||||
|
<Link href={`/detail/${post?.id}`}>
|
||||||
|
<button className="px-4 py-2 border border-gray-300 text-gray-700 text-sm rounded hover:bg-gray-100 transition">
|
||||||
|
READ MORE
|
||||||
|
</button>
|
||||||
|
</Link>
|
||||||
</div>
|
</div>
|
||||||
<p className="text-gray-600 mb-4">
|
</Link>
|
||||||
{post.description.split(" ").slice(0, 50).join(" ")}
|
|
||||||
{post.description.split(" ").length > 50 && "..."}
|
|
||||||
</p>
|
|
||||||
<Link href={`/detail/${post?.id}`}>
|
|
||||||
<button className="px-4 py-2 border border-gray-300 text-gray-700 text-sm rounded hover:bg-gray-100 transition">
|
|
||||||
READ MORE
|
|
||||||
</button>
|
|
||||||
</Link>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
{/* Right Thumbnail */}
|
{/* Right Thumbnail */}
|
||||||
<div className="w-full md:w-[280px] flex-shrink-0 mt-4 md:mt-0">
|
<div className="w-full md:w-[280px] flex-shrink-0 mt-4 md:mt-0">
|
||||||
<Image
|
<Image
|
||||||
|
|
|
||||||
|
|
@ -209,13 +209,6 @@ const SidebarContent = ({
|
||||||
{/* Logo and Toggle */}
|
{/* Logo and Toggle */}
|
||||||
<div className="flex items-center justify-between px-4 py-6">
|
<div className="flex items-center justify-between px-4 py-6">
|
||||||
<Link href="/" className="flex items-center space-x-3">
|
<Link href="/" className="flex items-center space-x-3">
|
||||||
<div className="relative">
|
|
||||||
<img
|
|
||||||
src="/bhayangkarakita.png"
|
|
||||||
className="w-10 h-10 rounded-lg shadow-sm"
|
|
||||||
/>
|
|
||||||
<div className="absolute -inset-1 bg-gradient-to-r from-blue-500 to-purple-500 rounded-lg opacity-20 blur-sm"></div>
|
|
||||||
</div>
|
|
||||||
{open && (
|
{open && (
|
||||||
<motion.div
|
<motion.div
|
||||||
initial={{ opacity: 0, x: -10 }}
|
initial={{ opacity: 0, x: -10 }}
|
||||||
|
|
@ -223,9 +216,10 @@ const SidebarContent = ({
|
||||||
transition={{ delay: 0.1 }}
|
transition={{ delay: 0.1 }}
|
||||||
className="flex flex-col"
|
className="flex flex-col"
|
||||||
>
|
>
|
||||||
<span className="text-sm font-bold bg-gradient-to-r from-slate-800 to-slate-600 bg-clip-text text-transparent">
|
<Link href="/" className="text-2xl font-bold">
|
||||||
Milenial Bersuara
|
<span className="text-gray-900">travel</span>
|
||||||
</span>
|
<span className="text-teal-400">news</span>
|
||||||
|
</Link>
|
||||||
<span className="text-xs text-slate-500">Admin Panel</span>
|
<span className="text-xs text-slate-500">Admin Panel</span>
|
||||||
</motion.div>
|
</motion.div>
|
||||||
)}
|
)}
|
||||||
|
|
|
||||||
|
|
@ -16,7 +16,7 @@ type Article = {
|
||||||
title: string;
|
title: string;
|
||||||
}[];
|
}[];
|
||||||
files: {
|
files: {
|
||||||
file_url: string;
|
fileUrl: string;
|
||||||
file_alt: string;
|
file_alt: string;
|
||||||
}[];
|
}[];
|
||||||
};
|
};
|
||||||
|
|
|
||||||
|
|
@ -46,6 +46,7 @@ import {
|
||||||
TableCell,
|
TableCell,
|
||||||
} from "@/components/ui/table";
|
} from "@/components/ui/table";
|
||||||
import CustomPagination from "../layout/custom-pagination";
|
import CustomPagination from "../layout/custom-pagination";
|
||||||
|
import DatePicker from "react-datepicker";
|
||||||
|
|
||||||
const columns = [
|
const columns = [
|
||||||
{ name: "No", uid: "no" },
|
{ name: "No", uid: "no" },
|
||||||
|
|
@ -60,6 +61,7 @@ const columns = [
|
||||||
const columnsOtherRole = [
|
const columnsOtherRole = [
|
||||||
{ name: "No", uid: "no" },
|
{ name: "No", uid: "no" },
|
||||||
{ name: "Judul", uid: "title" },
|
{ name: "Judul", uid: "title" },
|
||||||
|
{ name: "Source", uid: "source" },
|
||||||
{ name: "Kategori", uid: "category" },
|
{ name: "Kategori", uid: "category" },
|
||||||
{ name: "Tanggal Unggah", uid: "createdAt" },
|
{ name: "Tanggal Unggah", uid: "createdAt" },
|
||||||
{ name: "Kreator", uid: "createdByName" },
|
{ name: "Kreator", uid: "createdByName" },
|
||||||
|
|
@ -84,7 +86,9 @@ export default function ArticleTable() {
|
||||||
const [search, setSearch] = useState("");
|
const [search, setSearch] = useState("");
|
||||||
const [categories, setCategories] = useState<any>([]);
|
const [categories, setCategories] = useState<any>([]);
|
||||||
const [selectedCategories, setSelectedCategories] = useState<any>("");
|
const [selectedCategories, setSelectedCategories] = useState<any>("");
|
||||||
const [startDateValue, setStartDateValue] = useState({
|
const [selectedSource, setSelectedSource] = useState<any>("");
|
||||||
|
const [selectedStatus, setSelectedStatus] = useState<string>("");
|
||||||
|
const [dateRange, setDateRange] = useState<any>({
|
||||||
startDate: null,
|
startDate: null,
|
||||||
endDate: null,
|
endDate: null,
|
||||||
});
|
});
|
||||||
|
|
@ -98,24 +102,49 @@ export default function ArticleTable() {
|
||||||
const res = await getArticleByCategory();
|
const res = await getArticleByCategory();
|
||||||
const data = res?.data?.data;
|
const data = res?.data?.data;
|
||||||
setCategories(data);
|
setCategories(data);
|
||||||
|
console.log("category", data);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
useEffect(() => {
|
||||||
|
initState();
|
||||||
|
}, [
|
||||||
|
page,
|
||||||
|
showData,
|
||||||
|
search,
|
||||||
|
selectedCategories,
|
||||||
|
selectedSource,
|
||||||
|
dateRange,
|
||||||
|
selectedStatus,
|
||||||
|
]);
|
||||||
|
|
||||||
async function initState() {
|
async function initState() {
|
||||||
loading();
|
loading();
|
||||||
const req = {
|
const req = {
|
||||||
limit: showData,
|
limit: showData,
|
||||||
page: page,
|
page: page,
|
||||||
search: search,
|
search: search,
|
||||||
categorySlug: Array.from(selectedCategories).join(","),
|
category: selectedCategories || "",
|
||||||
|
source: selectedSource || "",
|
||||||
|
isPublish:
|
||||||
|
selectedStatus !== "" ? selectedStatus === "publish" : undefined,
|
||||||
|
startDate: dateRange.startDate
|
||||||
|
? new Date(dateRange.startDate).toISOString()
|
||||||
|
: "",
|
||||||
|
endDate: dateRange.endDate
|
||||||
|
? new Date(dateRange.endDate).toISOString()
|
||||||
|
: "",
|
||||||
sort: "desc",
|
sort: "desc",
|
||||||
sortBy: "created_at",
|
sortBy: "created_at",
|
||||||
};
|
};
|
||||||
|
|
||||||
const res = await getArticlePagination(req);
|
const res = await getArticlePagination(req);
|
||||||
await getTableNumber(parseInt(showData), res.data?.data);
|
|
||||||
|
let data = res.data?.data || [];
|
||||||
|
|
||||||
|
await getTableNumber(parseInt(showData), data);
|
||||||
setTotalPage(res?.data?.meta?.totalPage);
|
setTotalPage(res?.data?.meta?.totalPage);
|
||||||
close();
|
close();
|
||||||
}
|
}
|
||||||
|
|
||||||
// panggil ulang setiap state berubah
|
// panggil ulang setiap state berubah
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
initState();
|
initState();
|
||||||
|
|
@ -173,11 +202,11 @@ export default function ArticleTable() {
|
||||||
initState();
|
initState();
|
||||||
};
|
};
|
||||||
|
|
||||||
const copyUrlArticle = async (id: number, slug: string) => {
|
const copyUrlArticle = async (id: number) => {
|
||||||
const url =
|
const url =
|
||||||
`${window.location.protocol}//${window.location.host}` +
|
`${window.location.protocol}//${window.location.host}` +
|
||||||
"/news/detail/" +
|
"/detail/" +
|
||||||
`${id}-${slug}`;
|
`${id}`;
|
||||||
try {
|
try {
|
||||||
await navigator.clipboard.writeText(url);
|
await navigator.clipboard.writeText(url);
|
||||||
successToast("Success", "Article Copy to Clipboard");
|
successToast("Success", "Article Copy to Clipboard");
|
||||||
|
|
@ -228,9 +257,7 @@ export default function ArticleTable() {
|
||||||
</Button>
|
</Button>
|
||||||
</DropdownMenuTrigger>
|
</DropdownMenuTrigger>
|
||||||
<DropdownMenuContent className="w-56">
|
<DropdownMenuContent className="w-56">
|
||||||
<DropdownMenuItem
|
<DropdownMenuItem onClick={() => copyUrlArticle(article.id)}>
|
||||||
onClick={() => copyUrlArticle(article.id, article.slug)}
|
|
||||||
>
|
|
||||||
<CopyIcon className="mr-2 h-4 w-4" />
|
<CopyIcon className="mr-2 h-4 w-4" />
|
||||||
Copy Url Article
|
Copy Url Article
|
||||||
</DropdownMenuItem>
|
</DropdownMenuItem>
|
||||||
|
|
@ -245,18 +272,15 @@ export default function ArticleTable() {
|
||||||
</Link>
|
</Link>
|
||||||
</DropdownMenuItem>
|
</DropdownMenuItem>
|
||||||
|
|
||||||
{(username === "admin-mabes" ||
|
<DropdownMenuItem asChild>
|
||||||
Number(userId) === article.createdById) && (
|
<Link
|
||||||
<DropdownMenuItem asChild>
|
href={`/admin/article/edit/${article.id}`}
|
||||||
<Link
|
className="flex items-center"
|
||||||
href={`/admin/article/edit/${article.id}`}
|
>
|
||||||
className="flex items-center"
|
<CreateIconIon className="mr-2 h-4 w-4" />
|
||||||
>
|
Edit
|
||||||
<CreateIconIon className="mr-2 h-4 w-4" />
|
</Link>
|
||||||
Edit
|
</DropdownMenuItem>
|
||||||
</Link>
|
|
||||||
</DropdownMenuItem>
|
|
||||||
)}
|
|
||||||
|
|
||||||
{username === "admin-mabes" && (
|
{username === "admin-mabes" && (
|
||||||
<DropdownMenuItem
|
<DropdownMenuItem
|
||||||
|
|
@ -271,13 +295,10 @@ export default function ArticleTable() {
|
||||||
</DropdownMenuItem>
|
</DropdownMenuItem>
|
||||||
)}
|
)}
|
||||||
|
|
||||||
{(username === "admin-mabes" ||
|
<DropdownMenuItem onClick={() => handleDelete(article.id)}>
|
||||||
Number(userId) === article.createdById) && (
|
<DeleteIcon className="mr-2 h-4 w-4 text-red-500" />
|
||||||
<DropdownMenuItem onClick={() => handleDelete(article.id)}>
|
Delete
|
||||||
<DeleteIcon className="mr-2 h-4 w-4 text-red-500" />
|
</DropdownMenuItem>
|
||||||
Delete
|
|
||||||
</DropdownMenuItem>
|
|
||||||
)}
|
|
||||||
</DropdownMenuContent>
|
</DropdownMenuContent>
|
||||||
</DropdownMenu>
|
</DropdownMenu>
|
||||||
</div>
|
</div>
|
||||||
|
|
@ -354,24 +375,63 @@ export default function ArticleTable() {
|
||||||
</SelectTrigger>
|
</SelectTrigger>
|
||||||
<SelectContent>
|
<SelectContent>
|
||||||
{categories
|
{categories
|
||||||
?.filter((category: any) => category.slug != null)
|
?.filter((category: any) => category.title != null)
|
||||||
.map((category: any) => (
|
.map((category: any) => (
|
||||||
<SelectItem key={category.slug} value={category.slug}>
|
<SelectItem key={category.id} value={category.title}>
|
||||||
{category.title}
|
{category.title}
|
||||||
</SelectItem>
|
</SelectItem>
|
||||||
))}
|
))}
|
||||||
</SelectContent>
|
</SelectContent>
|
||||||
</Select>
|
</Select>
|
||||||
</div>
|
</div>
|
||||||
{/* <div className="flex flex-col gap-1 w-full lg:w-[240px]">
|
<div className="flex flex-col gap-1 w-full lg:w-[150px]">
|
||||||
|
<p className="font-semibold text-sm">Source</p>
|
||||||
|
<Select
|
||||||
|
value={selectedSource}
|
||||||
|
onValueChange={(value) => setSelectedSource(value)}
|
||||||
|
>
|
||||||
|
<SelectTrigger className="w-full text-sm border">
|
||||||
|
<SelectValue placeholder="Pilih Source" />
|
||||||
|
</SelectTrigger>
|
||||||
|
<SelectContent>
|
||||||
|
<SelectItem value="INTERNAL">INTERNAL</SelectItem>
|
||||||
|
<SelectItem value="EXTERNAL">EXTERNAL</SelectItem>
|
||||||
|
</SelectContent>
|
||||||
|
</Select>
|
||||||
|
</div>
|
||||||
|
<div className="flex flex-col gap-1 w-full lg:w-[150px]">
|
||||||
|
<p className="font-semibold text-sm">Status</p>
|
||||||
|
<Select
|
||||||
|
value={selectedStatus}
|
||||||
|
onValueChange={(value) => setSelectedStatus(value)}
|
||||||
|
>
|
||||||
|
<SelectTrigger className="w-full text-sm border">
|
||||||
|
<SelectValue placeholder="Pilih Status" />
|
||||||
|
</SelectTrigger>
|
||||||
|
<SelectContent>
|
||||||
|
<SelectItem value="publish">PUBLISH</SelectItem>
|
||||||
|
<SelectItem value="draft">DRAFT</SelectItem>
|
||||||
|
</SelectContent>
|
||||||
|
</Select>
|
||||||
|
</div>
|
||||||
|
<div className="flex flex-col gap-1 w-full lg:w-[240px]">
|
||||||
<p className="font-semibold text-sm">Tanggal</p>
|
<p className="font-semibold text-sm">Tanggal</p>
|
||||||
<Datepicker
|
<DatePicker
|
||||||
value={startDateValue}
|
selectsRange
|
||||||
displayFormat="DD/MM/YYYY"
|
startDate={dateRange.startDate}
|
||||||
onChange={(e: any) => setStartDateValue(e)}
|
endDate={dateRange.endDate}
|
||||||
inputClassName="z-50 w-full text-sm bg-transparent border-1 border-gray-200 px-2 py-[6px] rounded-xl h-[40px] text-gray-600 dark:text-gray-300"
|
onChange={(update: [Date | null, Date | null]) => {
|
||||||
|
setDateRange({
|
||||||
|
startDate: update[0],
|
||||||
|
endDate: update[1],
|
||||||
|
});
|
||||||
|
}}
|
||||||
|
isClearable
|
||||||
|
dateFormat="dd/MM/yyyy"
|
||||||
|
className="z-50 w-full text-sm bg-transparent border border-gray-200 px-2 py-[6px] rounded-xl h-[40px] text-gray-600 dark:text-gray-300"
|
||||||
|
placeholderText="Pilih rentang tanggal"
|
||||||
/>
|
/>
|
||||||
</div> */}
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div className="w-full overflow-x-hidden">
|
<div className="w-full overflow-x-hidden">
|
||||||
<div className="w-full mx-auto overflow-x-hidden">
|
<div className="w-full mx-auto overflow-x-hidden">
|
||||||
|
|
|
||||||
Binary file not shown.
|
After Width: | Height: | Size: 20 KiB |
|
|
@ -1,6 +1,11 @@
|
||||||
import { PaginationRequest } from "@/types/globals";
|
import { PaginationRequest } from "@/types/globals";
|
||||||
import { httpGet } from "./http-config/http-base-services";
|
import { httpGet } from "./http-config/http-base-services";
|
||||||
import { httpDeleteInterceptor, httpGetInterceptor, httpPostInterceptor, httpPutInterceptor } from "./http-config/http-interceptor-services";
|
import {
|
||||||
|
httpDeleteInterceptor,
|
||||||
|
httpGetInterceptor,
|
||||||
|
httpPostInterceptor,
|
||||||
|
httpPutInterceptor,
|
||||||
|
} from "./http-config/http-interceptor-services";
|
||||||
|
|
||||||
export async function getListArticle(props: PaginationRequest) {
|
export async function getListArticle(props: PaginationRequest) {
|
||||||
const {
|
const {
|
||||||
|
|
@ -40,13 +45,20 @@ export async function getArticlePagination(props: PaginationRequest) {
|
||||||
sort,
|
sort,
|
||||||
categorySlug,
|
categorySlug,
|
||||||
isBanner,
|
isBanner,
|
||||||
|
isPublish,
|
||||||
|
source,
|
||||||
} = props;
|
} = props;
|
||||||
|
|
||||||
return await httpGetInterceptor(
|
return await httpGetInterceptor(
|
||||||
`/articles?limit=${limit}&page=${page}&title=${search}&startDate=${startDate || ""}&endDate=${
|
`/articles?limit=${limit}&page=${page}&title=${search}&startDate=${
|
||||||
endDate || ""
|
startDate || ""
|
||||||
}&categoryId=${category || ""}&sortBy=${sortBy || "created_at"}&sort=${
|
}&endDate=${endDate || ""}&categoryId=${category || ""}&source=${
|
||||||
sort || "asc"
|
source || ""
|
||||||
}&category=${categorySlug || ""}&isBanner=${isBanner || ""}`
|
}&isPublish=${isPublish !== undefined ? isPublish : ""}&sortBy=${
|
||||||
|
sortBy || "created_at"
|
||||||
|
}&sort=${sort || "asc"}&category=${categorySlug || ""}&isBanner=${
|
||||||
|
isBanner || ""
|
||||||
|
}`
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -310,6 +310,7 @@ export type PaginationRequest = {
|
||||||
category?: string;
|
category?: string;
|
||||||
sortBy?: string;
|
sortBy?: string;
|
||||||
sort?: string;
|
sort?: string;
|
||||||
|
source?: string;
|
||||||
categorySlug?: string;
|
categorySlug?: string;
|
||||||
isBanner?: boolean;
|
isBanner?: boolean;
|
||||||
};
|
};
|
||||||
|
|
|
||||||
|
|
@ -2,31 +2,67 @@
|
||||||
* @license Copyright (c) 2014-2024, CKSource Holding sp. z o.o. All rights reserved.
|
* @license Copyright (c) 2014-2024, CKSource Holding sp. z o.o. All rights reserved.
|
||||||
* For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license
|
* For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license
|
||||||
*/
|
*/
|
||||||
import { ClassicEditor } from '@ckeditor/ckeditor5-editor-classic';
|
import { ClassicEditor } from "@ckeditor/ckeditor5-editor-classic";
|
||||||
import { Alignment } from '@ckeditor/ckeditor5-alignment';
|
import { Alignment } from "@ckeditor/ckeditor5-alignment";
|
||||||
import { Autoformat } from '@ckeditor/ckeditor5-autoformat';
|
import { Autoformat } from "@ckeditor/ckeditor5-autoformat";
|
||||||
import { Bold, Italic } from '@ckeditor/ckeditor5-basic-styles';
|
import { Bold, Italic } from "@ckeditor/ckeditor5-basic-styles";
|
||||||
import { BlockQuote } from '@ckeditor/ckeditor5-block-quote';
|
import { BlockQuote } from "@ckeditor/ckeditor5-block-quote";
|
||||||
import { CloudServices } from '@ckeditor/ckeditor5-cloud-services';
|
import { CloudServices } from "@ckeditor/ckeditor5-cloud-services";
|
||||||
import { CodeBlock } from '@ckeditor/ckeditor5-code-block';
|
import { CodeBlock } from "@ckeditor/ckeditor5-code-block";
|
||||||
import type { EditorConfig } from '@ckeditor/ckeditor5-core';
|
import type { EditorConfig } from "@ckeditor/ckeditor5-core";
|
||||||
import { Essentials } from '@ckeditor/ckeditor5-essentials';
|
import { Essentials } from "@ckeditor/ckeditor5-essentials";
|
||||||
import { FontSize } from '@ckeditor/ckeditor5-font';
|
import { FontSize } from "@ckeditor/ckeditor5-font";
|
||||||
import { Heading } from '@ckeditor/ckeditor5-heading';
|
import { Heading } from "@ckeditor/ckeditor5-heading";
|
||||||
import { Image, ImageCaption, ImageInsert, ImageStyle, ImageToolbar, ImageUpload } from '@ckeditor/ckeditor5-image';
|
import {
|
||||||
import { Indent } from '@ckeditor/ckeditor5-indent';
|
Image,
|
||||||
import { Link } from '@ckeditor/ckeditor5-link';
|
ImageCaption,
|
||||||
import { List } from '@ckeditor/ckeditor5-list';
|
ImageInsert,
|
||||||
import { MediaEmbed } from '@ckeditor/ckeditor5-media-embed';
|
ImageStyle,
|
||||||
import { Paragraph } from '@ckeditor/ckeditor5-paragraph';
|
ImageToolbar,
|
||||||
import { PasteFromOffice } from '@ckeditor/ckeditor5-paste-from-office';
|
ImageUpload,
|
||||||
import { SourceEditing } from '@ckeditor/ckeditor5-source-editing';
|
} from "@ckeditor/ckeditor5-image";
|
||||||
import { Table, TableToolbar } from '@ckeditor/ckeditor5-table';
|
import { Indent } from "@ckeditor/ckeditor5-indent";
|
||||||
import { TextTransformation } from '@ckeditor/ckeditor5-typing';
|
import { Link } from "@ckeditor/ckeditor5-link";
|
||||||
import { Undo } from '@ckeditor/ckeditor5-undo';
|
import { List } from "@ckeditor/ckeditor5-list";
|
||||||
import { SimpleUploadAdapter } from '@ckeditor/ckeditor5-upload';
|
import { MediaEmbed } from "@ckeditor/ckeditor5-media-embed";
|
||||||
|
import { Paragraph } from "@ckeditor/ckeditor5-paragraph";
|
||||||
|
import { PasteFromOffice } from "@ckeditor/ckeditor5-paste-from-office";
|
||||||
|
import { SourceEditing } from "@ckeditor/ckeditor5-source-editing";
|
||||||
|
import { Table, TableToolbar } from "@ckeditor/ckeditor5-table";
|
||||||
|
import { TextTransformation } from "@ckeditor/ckeditor5-typing";
|
||||||
|
import { Undo } from "@ckeditor/ckeditor5-undo";
|
||||||
|
import { SimpleUploadAdapter } from "@ckeditor/ckeditor5-upload";
|
||||||
declare class Editor extends ClassicEditor {
|
declare class Editor extends ClassicEditor {
|
||||||
static builtinPlugins: (typeof Alignment | typeof Autoformat | typeof BlockQuote | typeof Bold | typeof CloudServices | typeof CodeBlock | typeof Essentials | typeof FontSize | typeof Heading | typeof Image | typeof ImageCaption | typeof ImageInsert | typeof ImageStyle | typeof ImageToolbar | typeof ImageUpload | typeof Indent | typeof Italic | typeof Link | typeof List | typeof MediaEmbed | typeof Paragraph | typeof PasteFromOffice | typeof SimpleUploadAdapter | typeof SourceEditing | typeof Table | typeof TableToolbar | typeof TextTransformation | typeof Undo)[];
|
static builtinPlugins: (
|
||||||
static defaultConfig: EditorConfig;
|
| typeof Alignment
|
||||||
|
| typeof Autoformat
|
||||||
|
| typeof BlockQuote
|
||||||
|
| typeof Bold
|
||||||
|
| typeof CloudServices
|
||||||
|
| typeof CodeBlock
|
||||||
|
| typeof Essentials
|
||||||
|
| typeof FontSize
|
||||||
|
| typeof Heading
|
||||||
|
| typeof Image
|
||||||
|
| typeof ImageCaption
|
||||||
|
| typeof ImageInsert
|
||||||
|
| typeof ImageStyle
|
||||||
|
| typeof ImageToolbar
|
||||||
|
| typeof ImageUpload
|
||||||
|
| typeof Indent
|
||||||
|
| typeof Italic
|
||||||
|
| typeof Link
|
||||||
|
| typeof List
|
||||||
|
| typeof MediaEmbed
|
||||||
|
| typeof Paragraph
|
||||||
|
| typeof PasteFromOffice
|
||||||
|
| typeof SimpleUploadAdapter
|
||||||
|
| typeof SourceEditing
|
||||||
|
| typeof Table
|
||||||
|
| typeof TableToolbar
|
||||||
|
| typeof TextTransformation
|
||||||
|
| typeof Undo
|
||||||
|
)[];
|
||||||
|
static defaultConfig: EditorConfig;
|
||||||
}
|
}
|
||||||
export default Editor;
|
export default Editor;
|
||||||
|
|
|
||||||
1880
vendor/ckeditor5/node_modules/.typescript-7i6ZGcGl/lib/cs/diagnosticMessages.generated.json
generated
vendored
1880
vendor/ckeditor5/node_modules/.typescript-7i6ZGcGl/lib/cs/diagnosticMessages.generated.json
generated
vendored
File diff suppressed because it is too large
Load Diff
1880
vendor/ckeditor5/node_modules/.typescript-7i6ZGcGl/lib/de/diagnosticMessages.generated.json
generated
vendored
1880
vendor/ckeditor5/node_modules/.typescript-7i6ZGcGl/lib/de/diagnosticMessages.generated.json
generated
vendored
File diff suppressed because it is too large
Load Diff
1880
vendor/ckeditor5/node_modules/.typescript-7i6ZGcGl/lib/es/diagnosticMessages.generated.json
generated
vendored
1880
vendor/ckeditor5/node_modules/.typescript-7i6ZGcGl/lib/es/diagnosticMessages.generated.json
generated
vendored
File diff suppressed because it is too large
Load Diff
1880
vendor/ckeditor5/node_modules/.typescript-7i6ZGcGl/lib/fr/diagnosticMessages.generated.json
generated
vendored
1880
vendor/ckeditor5/node_modules/.typescript-7i6ZGcGl/lib/fr/diagnosticMessages.generated.json
generated
vendored
File diff suppressed because it is too large
Load Diff
1880
vendor/ckeditor5/node_modules/.typescript-7i6ZGcGl/lib/it/diagnosticMessages.generated.json
generated
vendored
1880
vendor/ckeditor5/node_modules/.typescript-7i6ZGcGl/lib/it/diagnosticMessages.generated.json
generated
vendored
File diff suppressed because it is too large
Load Diff
1880
vendor/ckeditor5/node_modules/.typescript-7i6ZGcGl/lib/ja/diagnosticMessages.generated.json
generated
vendored
1880
vendor/ckeditor5/node_modules/.typescript-7i6ZGcGl/lib/ja/diagnosticMessages.generated.json
generated
vendored
File diff suppressed because it is too large
Load Diff
1880
vendor/ckeditor5/node_modules/.typescript-7i6ZGcGl/lib/ko/diagnosticMessages.generated.json
generated
vendored
1880
vendor/ckeditor5/node_modules/.typescript-7i6ZGcGl/lib/ko/diagnosticMessages.generated.json
generated
vendored
File diff suppressed because it is too large
Load Diff
1880
vendor/ckeditor5/node_modules/.typescript-7i6ZGcGl/lib/pl/diagnosticMessages.generated.json
generated
vendored
1880
vendor/ckeditor5/node_modules/.typescript-7i6ZGcGl/lib/pl/diagnosticMessages.generated.json
generated
vendored
File diff suppressed because it is too large
Load Diff
1880
vendor/ckeditor5/node_modules/.typescript-7i6ZGcGl/lib/pt-br/diagnosticMessages.generated.json
generated
vendored
1880
vendor/ckeditor5/node_modules/.typescript-7i6ZGcGl/lib/pt-br/diagnosticMessages.generated.json
generated
vendored
File diff suppressed because it is too large
Load Diff
1880
vendor/ckeditor5/node_modules/.typescript-7i6ZGcGl/lib/ru/diagnosticMessages.generated.json
generated
vendored
1880
vendor/ckeditor5/node_modules/.typescript-7i6ZGcGl/lib/ru/diagnosticMessages.generated.json
generated
vendored
File diff suppressed because it is too large
Load Diff
1880
vendor/ckeditor5/node_modules/.typescript-7i6ZGcGl/lib/tr/diagnosticMessages.generated.json
generated
vendored
1880
vendor/ckeditor5/node_modules/.typescript-7i6ZGcGl/lib/tr/diagnosticMessages.generated.json
generated
vendored
File diff suppressed because it is too large
Load Diff
1880
vendor/ckeditor5/node_modules/.typescript-7i6ZGcGl/lib/zh-cn/diagnosticMessages.generated.json
generated
vendored
1880
vendor/ckeditor5/node_modules/.typescript-7i6ZGcGl/lib/zh-cn/diagnosticMessages.generated.json
generated
vendored
File diff suppressed because it is too large
Load Diff
1880
vendor/ckeditor5/node_modules/.typescript-7i6ZGcGl/lib/zh-tw/diagnosticMessages.generated.json
generated
vendored
1880
vendor/ckeditor5/node_modules/.typescript-7i6ZGcGl/lib/zh-tw/diagnosticMessages.generated.json
generated
vendored
File diff suppressed because it is too large
Load Diff
162
vendor/ckeditor5/node_modules/@ckeditor/ckeditor5-alignment/CHANGELOG.md
generated
vendored
Normal file
162
vendor/ckeditor5/node_modules/@ckeditor/ckeditor5-alignment/CHANGELOG.md
generated
vendored
Normal file
|
|
@ -0,0 +1,162 @@
|
||||||
|
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).
|
||||||
17
vendor/ckeditor5/node_modules/@ckeditor/ckeditor5-alignment/LICENSE.md
generated
vendored
Normal file
17
vendor/ckeditor5/node_modules/@ckeditor/ckeditor5-alignment/LICENSE.md
generated
vendored
Normal file
|
|
@ -0,0 +1,17 @@
|
||||||
|
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.
|
||||||
20
vendor/ckeditor5/node_modules/@ckeditor/ckeditor5-alignment/README.md
generated
vendored
Normal file
20
vendor/ckeditor5/node_modules/@ckeditor/ckeditor5-alignment/README.md
generated
vendored
Normal file
|
|
@ -0,0 +1,20 @@
|
||||||
|
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).
|
||||||
5
vendor/ckeditor5/node_modules/@ckeditor/ckeditor5-alignment/build/alignment.js
generated
vendored
Normal file
5
vendor/ckeditor5/node_modules/@ckeditor/ckeditor5-alignment/build/alignment.js
generated
vendored
Normal file
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
Normal file
1
vendor/ckeditor5/node_modules/@ckeditor/ckeditor5-alignment/build/translations/af.js
generated
vendored
Normal file
|
|
@ -0,0 +1 @@
|
||||||
|
!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
Normal file
1
vendor/ckeditor5/node_modules/@ckeditor/ckeditor5-alignment/build/translations/ar.js
generated
vendored
Normal file
|
|
@ -0,0 +1 @@
|
||||||
|
!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
Normal file
1
vendor/ckeditor5/node_modules/@ckeditor/ckeditor5-alignment/build/translations/az.js
generated
vendored
Normal file
|
|
@ -0,0 +1 @@
|
||||||
|
!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
Normal file
1
vendor/ckeditor5/node_modules/@ckeditor/ckeditor5-alignment/build/translations/bg.js
generated
vendored
Normal file
|
|
@ -0,0 +1 @@
|
||||||
|
!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
Normal file
1
vendor/ckeditor5/node_modules/@ckeditor/ckeditor5-alignment/build/translations/bn.js
generated
vendored
Normal file
|
|
@ -0,0 +1 @@
|
||||||
|
!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
Normal file
1
vendor/ckeditor5/node_modules/@ckeditor/ckeditor5-alignment/build/translations/bs.js
generated
vendored
Normal file
|
|
@ -0,0 +1 @@
|
||||||
|
!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
Normal file
1
vendor/ckeditor5/node_modules/@ckeditor/ckeditor5-alignment/build/translations/ca.js
generated
vendored
Normal file
|
|
@ -0,0 +1 @@
|
||||||
|
!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
Normal file
1
vendor/ckeditor5/node_modules/@ckeditor/ckeditor5-alignment/build/translations/cs.js
generated
vendored
Normal file
|
|
@ -0,0 +1 @@
|
||||||
|
!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
Normal file
1
vendor/ckeditor5/node_modules/@ckeditor/ckeditor5-alignment/build/translations/da.js
generated
vendored
Normal file
|
|
@ -0,0 +1 @@
|
||||||
|
!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
vendor/ckeditor5/node_modules/@ckeditor/ckeditor5-alignment/build/translations/de-ch.js
generated
vendored
Normal file
1
vendor/ckeditor5/node_modules/@ckeditor/ckeditor5-alignment/build/translations/de-ch.js
generated
vendored
Normal file
|
|
@ -0,0 +1 @@
|
||||||
|
!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
Normal file
1
vendor/ckeditor5/node_modules/@ckeditor/ckeditor5-alignment/build/translations/de.js
generated
vendored
Normal file
|
|
@ -0,0 +1 @@
|
||||||
|
!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
Normal file
1
vendor/ckeditor5/node_modules/@ckeditor/ckeditor5-alignment/build/translations/el.js
generated
vendored
Normal file
|
|
@ -0,0 +1 @@
|
||||||
|
!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
vendor/ckeditor5/node_modules/@ckeditor/ckeditor5-alignment/build/translations/en-au.js
generated
vendored
Normal file
1
vendor/ckeditor5/node_modules/@ckeditor/ckeditor5-alignment/build/translations/en-au.js
generated
vendored
Normal file
|
|
@ -0,0 +1 @@
|
||||||
|
!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
vendor/ckeditor5/node_modules/@ckeditor/ckeditor5-alignment/build/translations/en-gb.js
generated
vendored
Normal file
1
vendor/ckeditor5/node_modules/@ckeditor/ckeditor5-alignment/build/translations/en-gb.js
generated
vendored
Normal file
|
|
@ -0,0 +1 @@
|
||||||
|
!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
vendor/ckeditor5/node_modules/@ckeditor/ckeditor5-alignment/build/translations/es-co.js
generated
vendored
Normal file
1
vendor/ckeditor5/node_modules/@ckeditor/ckeditor5-alignment/build/translations/es-co.js
generated
vendored
Normal file
|
|
@ -0,0 +1 @@
|
||||||
|
!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
Normal file
1
vendor/ckeditor5/node_modules/@ckeditor/ckeditor5-alignment/build/translations/es.js
generated
vendored
Normal file
|
|
@ -0,0 +1 @@
|
||||||
|
!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
Normal file
1
vendor/ckeditor5/node_modules/@ckeditor/ckeditor5-alignment/build/translations/et.js
generated
vendored
Normal file
|
|
@ -0,0 +1 @@
|
||||||
|
!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
Normal file
1
vendor/ckeditor5/node_modules/@ckeditor/ckeditor5-alignment/build/translations/fa.js
generated
vendored
Normal file
|
|
@ -0,0 +1 @@
|
||||||
|
!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
Normal file
1
vendor/ckeditor5/node_modules/@ckeditor/ckeditor5-alignment/build/translations/fi.js
generated
vendored
Normal file
|
|
@ -0,0 +1 @@
|
||||||
|
!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
Normal file
1
vendor/ckeditor5/node_modules/@ckeditor/ckeditor5-alignment/build/translations/fr.js
generated
vendored
Normal file
|
|
@ -0,0 +1 @@
|
||||||
|
!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
Normal file
1
vendor/ckeditor5/node_modules/@ckeditor/ckeditor5-alignment/build/translations/gl.js
generated
vendored
Normal file
|
|
@ -0,0 +1 @@
|
||||||
|
!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
Normal file
1
vendor/ckeditor5/node_modules/@ckeditor/ckeditor5-alignment/build/translations/he.js
generated
vendored
Normal file
|
|
@ -0,0 +1 @@
|
||||||
|
!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
Normal file
1
vendor/ckeditor5/node_modules/@ckeditor/ckeditor5-alignment/build/translations/hi.js
generated
vendored
Normal file
|
|
@ -0,0 +1 @@
|
||||||
|
!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
Normal file
1
vendor/ckeditor5/node_modules/@ckeditor/ckeditor5-alignment/build/translations/hr.js
generated
vendored
Normal file
|
|
@ -0,0 +1 @@
|
||||||
|
!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
Normal file
1
vendor/ckeditor5/node_modules/@ckeditor/ckeditor5-alignment/build/translations/hu.js
generated
vendored
Normal file
|
|
@ -0,0 +1 @@
|
||||||
|
!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
Normal file
1
vendor/ckeditor5/node_modules/@ckeditor/ckeditor5-alignment/build/translations/id.js
generated
vendored
Normal file
|
|
@ -0,0 +1 @@
|
||||||
|
!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
Normal file
1
vendor/ckeditor5/node_modules/@ckeditor/ckeditor5-alignment/build/translations/it.js
generated
vendored
Normal file
|
|
@ -0,0 +1 @@
|
||||||
|
!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
Normal file
1
vendor/ckeditor5/node_modules/@ckeditor/ckeditor5-alignment/build/translations/ja.js
generated
vendored
Normal file
|
|
@ -0,0 +1 @@
|
||||||
|
!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
Normal file
1
vendor/ckeditor5/node_modules/@ckeditor/ckeditor5-alignment/build/translations/jv.js
generated
vendored
Normal file
|
|
@ -0,0 +1 @@
|
||||||
|
!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
Normal file
1
vendor/ckeditor5/node_modules/@ckeditor/ckeditor5-alignment/build/translations/kk.js
generated
vendored
Normal file
|
|
@ -0,0 +1 @@
|
||||||
|
!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
Normal file
1
vendor/ckeditor5/node_modules/@ckeditor/ckeditor5-alignment/build/translations/km.js
generated
vendored
Normal file
|
|
@ -0,0 +1 @@
|
||||||
|
!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
Normal file
1
vendor/ckeditor5/node_modules/@ckeditor/ckeditor5-alignment/build/translations/ko.js
generated
vendored
Normal file
|
|
@ -0,0 +1 @@
|
||||||
|
!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
Normal file
1
vendor/ckeditor5/node_modules/@ckeditor/ckeditor5-alignment/build/translations/ku.js
generated
vendored
Normal file
|
|
@ -0,0 +1 @@
|
||||||
|
!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
Normal file
1
vendor/ckeditor5/node_modules/@ckeditor/ckeditor5-alignment/build/translations/lt.js
generated
vendored
Normal file
|
|
@ -0,0 +1 @@
|
||||||
|
!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
Normal file
1
vendor/ckeditor5/node_modules/@ckeditor/ckeditor5-alignment/build/translations/lv.js
generated
vendored
Normal file
|
|
@ -0,0 +1 @@
|
||||||
|
!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
Normal file
1
vendor/ckeditor5/node_modules/@ckeditor/ckeditor5-alignment/build/translations/ms.js
generated
vendored
Normal file
|
|
@ -0,0 +1 @@
|
||||||
|
!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
Normal file
1
vendor/ckeditor5/node_modules/@ckeditor/ckeditor5-alignment/build/translations/nb.js
generated
vendored
Normal file
|
|
@ -0,0 +1 @@
|
||||||
|
!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
Normal file
1
vendor/ckeditor5/node_modules/@ckeditor/ckeditor5-alignment/build/translations/ne.js
generated
vendored
Normal file
|
|
@ -0,0 +1 @@
|
||||||
|
!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
Normal file
1
vendor/ckeditor5/node_modules/@ckeditor/ckeditor5-alignment/build/translations/nl.js
generated
vendored
Normal file
|
|
@ -0,0 +1 @@
|
||||||
|
!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
Normal file
1
vendor/ckeditor5/node_modules/@ckeditor/ckeditor5-alignment/build/translations/no.js
generated
vendored
Normal file
|
|
@ -0,0 +1 @@
|
||||||
|
!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
Normal file
1
vendor/ckeditor5/node_modules/@ckeditor/ckeditor5-alignment/build/translations/pl.js
generated
vendored
Normal file
|
|
@ -0,0 +1 @@
|
||||||
|
!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
vendor/ckeditor5/node_modules/@ckeditor/ckeditor5-alignment/build/translations/pt-br.js
generated
vendored
Normal file
1
vendor/ckeditor5/node_modules/@ckeditor/ckeditor5-alignment/build/translations/pt-br.js
generated
vendored
Normal file
|
|
@ -0,0 +1 @@
|
||||||
|
!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
Normal file
1
vendor/ckeditor5/node_modules/@ckeditor/ckeditor5-alignment/build/translations/pt.js
generated
vendored
Normal file
|
|
@ -0,0 +1 @@
|
||||||
|
!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
Normal file
1
vendor/ckeditor5/node_modules/@ckeditor/ckeditor5-alignment/build/translations/ro.js
generated
vendored
Normal file
|
|
@ -0,0 +1 @@
|
||||||
|
!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
Normal file
1
vendor/ckeditor5/node_modules/@ckeditor/ckeditor5-alignment/build/translations/ru.js
generated
vendored
Normal file
|
|
@ -0,0 +1 @@
|
||||||
|
!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
Normal file
1
vendor/ckeditor5/node_modules/@ckeditor/ckeditor5-alignment/build/translations/sk.js
generated
vendored
Normal file
|
|
@ -0,0 +1 @@
|
||||||
|
!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
Normal file
1
vendor/ckeditor5/node_modules/@ckeditor/ckeditor5-alignment/build/translations/sl.js
generated
vendored
Normal file
|
|
@ -0,0 +1 @@
|
||||||
|
!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
Normal file
1
vendor/ckeditor5/node_modules/@ckeditor/ckeditor5-alignment/build/translations/sq.js
generated
vendored
Normal file
|
|
@ -0,0 +1 @@
|
||||||
|
!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
vendor/ckeditor5/node_modules/@ckeditor/ckeditor5-alignment/build/translations/sr-latn.js
generated
vendored
Normal file
1
vendor/ckeditor5/node_modules/@ckeditor/ckeditor5-alignment/build/translations/sr-latn.js
generated
vendored
Normal file
|
|
@ -0,0 +1 @@
|
||||||
|
!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
Normal file
1
vendor/ckeditor5/node_modules/@ckeditor/ckeditor5-alignment/build/translations/sr.js
generated
vendored
Normal file
|
|
@ -0,0 +1 @@
|
||||||
|
!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
Normal file
1
vendor/ckeditor5/node_modules/@ckeditor/ckeditor5-alignment/build/translations/sv.js
generated
vendored
Normal file
|
|
@ -0,0 +1 @@
|
||||||
|
!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
Normal file
1
vendor/ckeditor5/node_modules/@ckeditor/ckeditor5-alignment/build/translations/th.js
generated
vendored
Normal file
|
|
@ -0,0 +1 @@
|
||||||
|
!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
Normal file
1
vendor/ckeditor5/node_modules/@ckeditor/ckeditor5-alignment/build/translations/tk.js
generated
vendored
Normal file
|
|
@ -0,0 +1 @@
|
||||||
|
!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
Normal file
1
vendor/ckeditor5/node_modules/@ckeditor/ckeditor5-alignment/build/translations/tr.js
generated
vendored
Normal file
|
|
@ -0,0 +1 @@
|
||||||
|
!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
Normal file
1
vendor/ckeditor5/node_modules/@ckeditor/ckeditor5-alignment/build/translations/ug.js
generated
vendored
Normal file
|
|
@ -0,0 +1 @@
|
||||||
|
!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
Normal file
1
vendor/ckeditor5/node_modules/@ckeditor/ckeditor5-alignment/build/translations/uk.js
generated
vendored
Normal file
|
|
@ -0,0 +1 @@
|
||||||
|
!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
Normal file
1
vendor/ckeditor5/node_modules/@ckeditor/ckeditor5-alignment/build/translations/ur.js
generated
vendored
Normal file
|
|
@ -0,0 +1 @@
|
||||||
|
!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
Normal file
1
vendor/ckeditor5/node_modules/@ckeditor/ckeditor5-alignment/build/translations/uz.js
generated
vendored
Normal file
|
|
@ -0,0 +1 @@
|
||||||
|
!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
Normal file
1
vendor/ckeditor5/node_modules/@ckeditor/ckeditor5-alignment/build/translations/vi.js
generated
vendored
Normal file
|
|
@ -0,0 +1 @@
|
||||||
|
!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
vendor/ckeditor5/node_modules/@ckeditor/ckeditor5-alignment/build/translations/zh-cn.js
generated
vendored
Normal file
1
vendor/ckeditor5/node_modules/@ckeditor/ckeditor5-alignment/build/translations/zh-cn.js
generated
vendored
Normal file
|
|
@ -0,0 +1 @@
|
||||||
|
!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
Normal file
1
vendor/ckeditor5/node_modules/@ckeditor/ckeditor5-alignment/build/translations/zh.js
generated
vendored
Normal file
|
|
@ -0,0 +1 @@
|
||||||
|
!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={}));
|
||||||
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue