Commit 7081e8df authored by Vũ Đình Nguyên's avatar Vũ Đình Nguyên

feat(page-representatives-employers): creat page-representatives employers

parent 8c3aefaa
"use client";
import React, { useState } from "react";
import { PATHS } from "@constants/paths";
import ListCategory from "@app/dai-dien-gioi-chu/components/list-category";
import { OWNER_REPRESENTATIVES_CATEGORIES } from "@constants/categories";
import ListFilter from "@app/dai-dien-gioi-chu/components/list-filter";
import NewsContent from "@app/dai-dien-gioi-chu/components/card-news";
import { Pagination } from "@components/base/pagination";
......@@ -21,23 +21,7 @@ export default function Page() {
return (
<div className="min-h-screen container mx-auto p-4">
<div className="w-full flex flex-col gap-5">
<ListCategory
categories={[
{
title: "Chức năng Đại diện Người sử dụng lao động",
href: `${PATHS.ownerRepresentatives}`,
},
{
title: "Sự kiện – Tập huấn NSDLĐ",
href: `${PATHS.ownerRepresentatives}/tap-huan-nsdld`,
},
{
title: "Tin liên quan",
href: `${PATHS.ownerRepresentatives}/tin-lien-quan`,
},
{ title: "Chủ đề", href: `${PATHS.ownerRepresentatives}/chu-de` },
]}
/>
<ListCategory categories={OWNER_REPRESENTATIVES_CATEGORIES} />
<div className="grid grid-cols-1 lg:grid-cols-3 gap-6">
{/* Main content */}
......
// Core
import Image from "next/image";
import ListCategory from "../components/list-category";
import { OWNER_REPRESENTATIVES_CATEGORIES } from "@constants/categories";
import ListFilter from "../components/list-filter";
import parse from "html-react-parser";
import { SAMPLE_HTML } from "../lib/sampleHtml";
// ...existing code...
const Page: React.FC = () => {
return (
<div className="min-h-screen w-full container mx-auto p-4">
<div className="w-full flex flex-col gap-5">
<ListCategory categories={OWNER_REPRESENTATIVES_CATEGORIES} />
<div className="grid grid-cols-1 lg:grid-cols-3 gap-6">
{/* Main content */}
<main className="lg:col-span-2 bg-white border rounded-md p-6">
<div className="p-7.5 prose tiptap">{parse(SAMPLE_HTML)}</div>
</main>
{/* Sidebar */}
<aside className="space-y-6">
<ListFilter />
<div className="bg-white border rounded-md overflow-hidden">
<div className="w-full h-56 relative bg-gray-100">
<Image
src="/banner.webp"
alt="Quảng cáo"
fill
className="object-cover"
/>
</div>
</div>
</aside>
</div>
</div>
</div>
);
};
export default Page;
......@@ -14,6 +14,10 @@ function NewsContent({ news }: { news: NewsItem }) {
src={`${Links.imageEndpoint}${news.thumbnail}`}
alt={news.title}
className="w-full sm:w-56 md:w-64 h-40 md:h-36 object-cover shrink-0"
onError={(e) => {
e.currentTarget.src = "/img-error.png"
}}
/>
<div className="flex-1 min-w-0 pl-0 sm:pl-4">
......
"use client"
import React, { useState } from 'react'
import React, { useState, useEffect } from 'react'
import { Checkbox } from '@/components/ui/checkbox'
import { Input } from '@/components/ui/input'
import { Button } from '@/components/ui/button'
type Category = { id: string; title: string; count: number }
const DEFAULT_CATEGORIES: Category[] = [
{ id: 'ceo', title: 'CEO', count: 4 },
{ id: 'policy', title: 'Hỏi đáp về chính sách', count: 0 },
{ id: 'biz', title: 'Tin Doanh Nghiệp', count: 9 },
{ id: 'member', title: 'Tin Hội Viên', count: 17 },
{ id: 'law', title: 'Văn bản Pháp luật sắp có hiệu lực', count: 30 },
]
export const ListFilter: React.FC<{
categories?: Category[]
onSearch?: (q: string) => void
onReset?: () => void
}> = ({ categories = DEFAULT_CATEGORIES, onSearch, onReset }) => {
}> = ({ categories, onSearch, onReset }) => {
const [query, setQuery] = useState('')
const [visibleCount, setVisibleCount] = useState(5)
const [selected, setSelected] = useState<Record<string, boolean>>(() => {
const map: Record<string, boolean> = {}
categories.forEach((c) => (map[c.id] = false))
if (categories && categories.length) {
categories.forEach((c: Category) => (map[c.id] = false))
}
return map
})
// Keep selected map in sync when categories prop changes.
// Defer setSelected to avoid calling setState synchronously inside the effect.
useEffect(() => {
const timer = setTimeout(() => {
setSelected((prev) => {
const map: Record<string, boolean> = {}
if (categories && categories.length) {
categories.forEach((c: Category) => (map[c.id] = !!prev[c.id]))
}
return map
})
}, 0)
return () => clearTimeout(timer)
}, [categories])
const toggle = (id: string) => setSelected((s) => ({ ...s, [id]: !s[id] }))
return (
......@@ -47,18 +56,20 @@ export const ListFilter: React.FC<{
/>
</div>
<div className="flex flex-col gap-3 mb-6">
{categories.slice(0, visibleCount).map((c) => (
<label key={c.id} className="flex items-center gap-3">
<Checkbox checked={!!selected[c.id]} onCheckedChange={() => toggle(c.id)} />
<div className="flex justify-between w-full items-center">
<span className="text-sm">{c.title}</span>
<span className="text-sm text-gray-400">({c.count})</span>
</div>
</label>
))}
<div className="flex flex-col gap-3">
{categories && categories.length > 0 ? (
categories.slice(0, visibleCount).map((c) => (
<label key={c.id} className="flex items-center gap-3">
<Checkbox checked={!!selected[c.id]} onCheckedChange={() => toggle(c.id)} />
<div className="flex justify-between w-full items-center">
<span className="text-sm">{c.title}</span>
<span className="text-sm text-gray-400">({c.count})</span>
</div>
</label>
))
) : null}
<div className="mt-2 flex items-center gap-3">
{categories.length > visibleCount && (
{(categories?.length ?? 0) > visibleCount && (
<button
className="text-sm text-primary self-start"
onClick={() => setVisibleCount((v) => v + 5)}
......@@ -84,15 +95,17 @@ export const ListFilter: React.FC<{
</Button>
<Button
className="flex-1 rounded-none font-medium text-lg text-white hover:bg-muted-foreground hover:outline-1 outline-primary hover:text-primary"
onClick={() => {
setQuery('')
// restore initial map
const map: Record<string, boolean> = {}
categories.forEach((c) => (map[c.id] = false))
setSelected(map)
setVisibleCount(5)
onReset?.()
}}
onClick={() => {
setQuery('')
// restore initial map
const map: Record<string, boolean> = {}
if (categories && categories.length) {
categories.forEach((c) => (map[c.id] = false))
}
setSelected(map)
setVisibleCount(5)
onReset?.()
}}
>
Bỏ tìm
</Button>
......
"use client"
// Core
import Image from "next/image";
import React, { useEffect } from 'react'
import { useRouter } from 'next/navigation'
import ListCategory from "./components/list-category";
import ListFilter from "./components/list-filter";
import parse from "html-react-parser";
import { SAMPLE_HTML } from "./lib/sampleHtml";
import { PATHS } from "@constants/paths";
const Page: React.FC = () => {
return (
<div className="min-h-screen w-full container mx-auto p-4">
<div className="w-full flex flex-col gap-5">
<ListCategory
categories={[
{
title: "Chức năng Đại diện Người sử dụng lao động",
href: `${PATHS.ownerRepresentatives}`,
},
{
title: "Sự kiện – Tập huấn NSDLĐ",
href: `${PATHS.ownerRepresentatives}/tap-huan-nsdld`,
},
{
title: "Tin liên quan",
href: `${PATHS.ownerRepresentatives}/tin-lien-quan`,
},
{ title: "Chủ đề", href: `${PATHS.ownerRepresentatives}/chu-de` },
]}
/>
import { OWNER_REPRESENTATIVES_CATEGORIES } from "@constants/categories";
<div className="grid grid-cols-1 lg:grid-cols-3 gap-6">
{/* Main content */}
<main className="lg:col-span-2 bg-white border rounded-md p-6">
<div className="p-7.5 prose tiptap">{parse(SAMPLE_HTML)}</div>
</main>
const Page = () => {
const router = useRouter()
{/* Sidebar */}
<aside className="space-y-6">
<ListFilter />
useEffect(() => {
const firstHref = `${PATHS.ownerRepresentatives}/chuc-nang-dai-dien-nguoi-su-dung-lao-dong`
router.push(firstHref)
}, [router])
<div className="bg-white border rounded-md overflow-hidden">
<div className="w-full h-56 relative bg-gray-100">
<Image
src="/banner.webp"
alt="Quảng cáo"
fill
className="object-cover"
/>
</div>
</div>
</aside>
</div>
return (
<div className="min-h-screen w-full container mx-auto p-4">
<div className="w-full flex flex-col gap-5">
<ListCategory categories={OWNER_REPRESENTATIVES_CATEGORIES} />
</div>
</div>
);
......
"use client";
import React, { useState } from "react";
import ListCategory from "@app/dai-dien-gioi-chu/components/list-category";
import { PATHS } from "@constants/paths";
import { OWNER_REPRESENTATIVES_CATEGORIES } from "@constants/categories";
import ListFilter from "@app/dai-dien-gioi-chu/components/list-filter";
import NewsContent from "@app/dai-dien-gioi-chu/components/card-news";
import { Pagination } from "@components/base/pagination";
......@@ -21,23 +21,7 @@ export default function Page() {
return (
<div className="min-h-screen container mx-auto p-4">
<div className="w-full flex flex-col gap-5">
<ListCategory
categories={[
{
title: "Chức năng Đại diện Người sử dụng lao động",
href: `${PATHS.ownerRepresentatives}`,
},
{
title: "Sự kiện – Tập huấn NSDLĐ",
href: `${PATHS.ownerRepresentatives}/tap-huan-nsdld`,
},
{
title: "Tin liên quan",
href: `${PATHS.ownerRepresentatives}/tin-lien-quan`,
},
{ title: "Chủ đề", href: `${PATHS.ownerRepresentatives}/chu-de` },
]}
/>
<ListCategory categories={OWNER_REPRESENTATIVES_CATEGORIES} />
<div className="grid grid-cols-1 lg:grid-cols-3 gap-6">
{/* Main content */}
......
"use client";
import React, { useState } from "react";
import ListCategory from "@app/dai-dien-gioi-chu/components/list-category";
import { PATHS } from '@constants/paths'
import { OWNER_REPRESENTATIVES_CATEGORIES } from "@constants/categories";
import ListFilter from "@app/dai-dien-gioi-chu/components/list-filter";
import NewsContent from "@app/dai-dien-gioi-chu/components/card-news";
import { Pagination} from "@components/base/pagination";
......@@ -21,23 +21,7 @@ export default function Page() {
return (
<div className="min-h-screen container mx-auto p-4">
<div className="w-full flex flex-col gap-5">
<ListCategory
categories={[
{
title: "Chức năng Đại diện Người sử dụng lao động",
href: `${PATHS.ownerRepresentatives}`,
},
{
title: "Sự kiện – Tập huấn NSDLĐ",
href: `${PATHS.ownerRepresentatives}/tap-huan-nsdld`,
},
{
title: "Tin liên quan",
href: `${PATHS.ownerRepresentatives}/tin-lien-quan`,
},
{ title: "Chủ đề", href: `${PATHS.ownerRepresentatives}/chu-de` },
]}
/>
<ListCategory categories={OWNER_REPRESENTATIVES_CATEGORIES} />
<div className="grid grid-cols-1 lg:grid-cols-3 gap-6">
{/* Main content */}
......@@ -60,10 +44,10 @@ export default function Page() {
</main>
{/* Sidebar */}
<aside className="space-y-6">
<aside className="space-y-6 order-first lg:order-last">
<ListFilter />
<div className="bg-white border rounded-md overflow-hidden">
<div className="bg-white border rounded-md overflow-hidden hidden lg:block">
<div className="w-full h-56 relative bg-gray-100">
<Image
src="/banner.webp"
......
......@@ -2,11 +2,8 @@
import MapRegion, { DEFAULT_REGIONS } from "./components/map-region"
import React, { useState } from "react";
import ListCategory from "@app/dai-dien-gioi-chu/components/list-category";
import { PATHS } from '@constants/paths'
import EventFilter from "@app/dai-dien-gioi-chu/components/event-filter";
import NewsContent from "@app/dai-dien-gioi-chu/components/card-news";
import { Pagination} from "@components/base/pagination";
import Image from "next/image";
import { TRADE_PROMOTION_CATEGORIES } from "@constants/categories";
// ...existing code...
export default function Page() {
const [active, setActive] = useState<string | null>(DEFAULT_REGIONS[0]?.id ?? null)
......@@ -14,26 +11,7 @@ export default function Page() {
return (
<div className="min-h-screen container mx-auto p-4">
<div className="w-full flex flex-col gap-5">
<ListCategory
categories={[
{
title: "Hồ sơ thị trường",
href: `${PATHS.marketProfile}/`,
},
{
title: "Môi trường kinh doanh",
href: `${PATHS.tradePromotion}/moi-truong-kinh-doanh`,
},
{
title: "Cơ hội kinh doanh",
href: `${PATHS.tradePromotion}/co-hoi-kinh-doanh`,
},
{
title: "Hỗ trợ kinh doanh",
href: `${PATHS.tradePromotion}/ho-tro-kinh-doanh`,
},
]}
/>
<ListCategory categories={TRADE_PROMOTION_CATEGORIES} />
<div className="grid grid-cols-1 lg:grid-cols-3 gap-6">
{/* Main content */}
......
"use client";
import React, { useState } from "react";
import ListCategory from "@app/dai-dien-gioi-chu/components/list-category";
import { PATHS } from '@constants/paths'
import { EVENT_CATEGORIES } from "@constants/categories";
import EventFilter from "@app/dai-dien-gioi-chu/components/event-filter";
import NewsContent from "@app/dai-dien-gioi-chu/components/card-news";
import { Pagination} from "@components/base/pagination";
......@@ -21,18 +21,7 @@ export default function Page() {
return (
<div className="min-h-screen container mx-auto p-4">
<div className="w-full flex flex-col gap-5">
<ListCategory
categories={[
{
title: "Sự kiện",
href: `${PATHS.event}/su-kien`,
},
{
title: "Đào tạo",
href: `${PATHS.event}/dao-tao`,
},
]}
/>
<ListCategory categories={EVENT_CATEGORIES} />
<div className="grid grid-cols-1 lg:grid-cols-3 gap-6">
{/* Main content */}
......
"use client";
import React, { useEffect } from "react";
import ListCategory from "@app/dai-dien-gioi-chu/components/list-category";
import { PATHS } from "@constants/paths";
import { EVENT_CATEGORIES } from "@constants/categories";
import { useRouter } from "next/navigation";
// ...existing code...
export default function Page() {
const router = useRouter();
useEffect(() => {
const firstHref = `${PATHS.event}/su-kien`;
router.push(firstHref);
}, [router]);
return (
<div className="min-h-screen container mx-auto p-4">
<div className="w-full flex flex-col gap-5">
<ListCategory categories={EVENT_CATEGORIES} />
</div>
</div>
);
}
"use client";
import React, { useState } from "react";
import ListCategory from "@app/dai-dien-gioi-chu/components/list-category";
import { PATHS } from '@constants/paths'
import { EVENT_CATEGORIES } from "@constants/categories";
import EventFilter from "@app/dai-dien-gioi-chu/components/event-filter";
import NewsContent from "@app/dai-dien-gioi-chu/components/card-news";
// ...existing code...
import { Pagination} from "@components/base/pagination";
import Image from "next/image";
import { useGetNews } from "@api/endpoints/news";
import { GetNewsResponseType } from "@api/types/NewsPage.type";
export default function Page() {
const [submitSearch] = useState("");
const [page, setPage] = useState(1);
......@@ -21,18 +23,7 @@ export default function Page() {
return (
<div className="min-h-screen container mx-auto p-4">
<div className="w-full flex flex-col gap-5">
<ListCategory
categories={[
{
title: "Sự kiện",
href: `${PATHS.event}/su-kien`,
},
{
title: "Đào tạo",
href: `${PATHS.event}/dao-tao`,
},
]}
/>
<ListCategory categories={EVENT_CATEGORIES} />
<div className="grid grid-cols-1 lg:grid-cols-3 gap-6">
{/* Main content */}
......
......@@ -3,49 +3,58 @@ import React, { useState } from "react";
import ListCategory from "./../components/list-category";
import ListFilter from "./../components/list-filter";
import CardNews from "./../components/card-news";
import { Pagination } from '@components/base/pagination'
import { Pagination } from "@components/base/pagination";
import Image from "next/image";
import { useGetNews } from '@api/endpoints/news'
import { GetNewsResponseType } from '@api/types/NewsPage.type'
import { useGetNews } from "@api/endpoints/news";
import { GetNewsResponseType } from "@api/types/NewsPage.type";
export default function Page() {
const [submitSearch] = useState('')
const [page, setPage] = useState(1)
const [submitSearch] = useState("");
const [page, setPage] = useState(1);
const pageSize = 5
const { data: allData, isLoading } = useGetNews<GetNewsResponseType>({
pageSize: String(pageSize),
currentPage: String(page),
filters: submitSearch ? `title @=${submitSearch}` : undefined,
})
return (
<div className="min-h-screen container mx-auto pb-4">
<div className="w-full flex flex-col gap-5">
<ListCategory />
<div className="grid grid-cols-1 lg:grid-cols-3 gap-6">
{/* Main content */}
<main className="lg:col-span-2 bg-background">
<div className='pb-5 overflow-hidden'>
{allData?.responseData.rows.map((news) => (
<CardNews key={news.id} news={news} />
))}
const pageSize = 5;
const { data: allData, isLoading } = useGetNews<GetNewsResponseType>({
pageSize: String(pageSize),
currentPage: String(page),
filters: submitSearch ? `title @=${submitSearch}` : undefined,
});
return (
<div className="min-h-screen container mx-auto pb-4">
<div className="w-full flex flex-col gap-5">
<ListCategory />
<div className="grid grid-cols-1 lg:grid-cols-3 gap-6">
{/* Main content */}
<main className="lg:col-span-2 bg-background">
<div className="pb-5 overflow-hidden">
{allData?.responseData.rows.map((news) => (
<CardNews key={news.id} news={news} />
))}
<div className='w-full flex justify-center mt-4'>
<Pagination
current={allData?.responseData.currentPage ?? page}
total={allData?.responseData.totalPages ?? 1}
onChange={(p) => setPage(p)}
/>
</div>
</div>
</main>
<div className="w-full flex justify-center mt-4">
<Pagination
pageCount={Number(allData?.responseData.totalPages ?? 1)}
page={Number(allData?.responseData.currentPage ?? page)}
onChangePage={(p) => setPage(p)}
onGoToPreviousPage={() => setPage(Math.max(1, page - 1))}
onGoToNextPage={() =>
setPage(
Math.min(
Number(allData?.responseData.totalPages ?? 1),
page + 1
)
)
}
/>
</div>
</div>
</main>
{/* Sidebar */}
<aside className="space-y-6">
<ListFilter />
</aside>
</div>
</div>
</div>
);
}
\ No newline at end of file
{/* Sidebar */}
<aside className="space-y-6">
<ListFilter />
</aside>
</div>
</div>
</div>
);
}
......@@ -31,11 +31,13 @@ export default function Page() {
))}
<div className='w-full flex justify-center mt-4'>
<Pagination
current={allData?.responseData.currentPage ?? page}
total={allData?.responseData.totalPages ?? 1}
onChange={(p) => setPage(p)}
/>
<Pagination
pageCount={Number(allData?.responseData.totalPages ?? 1)}
page={Number(allData?.responseData.currentPage ?? page)}
onChangePage={(p) => setPage(p)}
onGoToPreviousPage={() => setPage(Math.max(1, page - 1))}
onGoToNextPage={() => setPage(Math.min(Number(allData?.responseData.totalPages ?? 1), page + 1))}
/>
</div>
</div>
</main>
......
"use client";
import React, { useState } from "react";
import ListCategory from "@app/dai-dien-gioi-chu/components/list-category";
import { PATHS } from '@constants/paths'
import { MEDIA_INFORMATION_CATEGORIES } from "@constants/categories";
import EventFilter from "@app/dai-dien-gioi-chu/components/event-filter";
import NewsContent from "@app/dai-dien-gioi-chu/components/card-news";
import { Pagination} from "@components/base/pagination";
......@@ -21,38 +21,7 @@ export default function Page() {
return (
<div className="min-h-screen container mx-auto p-4">
<div className="w-full flex flex-col gap-5">
<ListCategory
categories={[
{
title: "Tin VCCI",
href: `${PATHS.mediaInformation}/tin-vcci`,
},
{
title: "Tin kinh tế",
href: `${PATHS.mediaInformation}/tin-kinh-te`,
},
{
title: "Tin doanh nghiệp",
href: `${PATHS.mediaInformation}/tin-doanh-nghiep`,
},
{
title: "Chuyên đề",
href: `${PATHS.mediaInformation}/chuyen-de`,
},
{
title: "Thông tin chính sách và pháp luật",
href: `${PATHS.mediaInformation}/thong-tin-chinh-sach-va-phap-luat`,
},
{
title: "Ấn phẩm",
href: `${PATHS.mediaInformation}/an-pham`,
},
{
title: "Thư viện tài liệu",
href: `${PATHS.mediaInformation}/thu-vien-tai-lieu`,
},
]}
/>
<ListCategory categories={MEDIA_INFORMATION_CATEGORIES} />
<div className="grid grid-cols-1 lg:grid-cols-3 gap-6">
{/* Main content */}
......
"use client";
import React, { useState } from "react";
import ListCategory from "@app/dai-dien-gioi-chu/components/list-category";
import { PATHS } from '@constants/paths'
import EventFilter from "@app/dai-dien-gioi-chu/components/event-filter";
import { MEDIA_INFORMATION_CATEGORIES } from "@constants/categories";
// ...existing code...
import NewsContent from "@app/dai-dien-gioi-chu/components/card-news";
import ListFilter from "@app/dai-dien-gioi-chu/components/list-filter";
import { Pagination} from "@components/base/pagination";
import Image from "next/image";
import { useGetNews } from "@api/endpoints/news";
......@@ -21,38 +22,7 @@ export default function Page() {
return (
<div className="min-h-screen container mx-auto p-4">
<div className="w-full flex flex-col gap-5">
<ListCategory
categories={[
{
title: "Tin VCCI",
href: `${PATHS.mediaInformation}/tin-vcci`,
},
{
title: "Tin kinh tế",
href: `${PATHS.mediaInformation}/tin-kinh-te`,
},
{
title: "Tin doanh nghiệp",
href: `${PATHS.mediaInformation}/tin-doanh-nghiep`,
},
{
title: "Chuyên đề",
href: `${PATHS.mediaInformation}/chuyen-de`,
},
{
title: "Thông tin chính sách và pháp luật",
href: `${PATHS.mediaInformation}/thong-tin-chinh-sach-va-phap-luat`,
},
{
title: "Ấn phẩm",
href: `${PATHS.mediaInformation}/an-pham`,
},
{
title: "Thư viện tài liệu",
href: `${PATHS.mediaInformation}/thu-vien-tai-lieu`,
},
]}
/>
<ListCategory categories={MEDIA_INFORMATION_CATEGORIES} />
<div className="grid grid-cols-1 lg:grid-cols-3 gap-6">
{/* Main content */}
......@@ -76,7 +46,7 @@ export default function Page() {
{/* Sidebar */}
<aside className="space-y-6">
<EventFilter />
<ListFilter />
<div className="bg-white border rounded-md overflow-hidden">
<div className="w-full h-56 relative bg-gray-100">
......
"use client";
import React, { useEffect } from "react";
import ListCategory from "@app/dai-dien-gioi-chu/components/list-category";
import { PATHS } from "@constants/paths";
import { MEDIA_INFORMATION_CATEGORIES } from "@constants/categories";
import { useRouter } from 'next/navigation'
// ...existing code...
export default function Page() {
const router = useRouter()
useEffect(() => {
const firstHref = `${PATHS.mediaInformation}/tin-vcci`
router.push(firstHref)
}, [router])
return (
<div className="min-h-screen container mx-auto p-4">
<div className="w-full flex flex-col gap-5">
<ListCategory categories={MEDIA_INFORMATION_CATEGORIES} />
</div>
</div>
);
}
"use client";
import React, { useState } from "react";
import ListCategory from "@app/dai-dien-gioi-chu/components/list-category";
import { PATHS } from '@constants/paths'
import EventFilter from "@app/dai-dien-gioi-chu/components/event-filter";
import { MEDIA_INFORMATION_CATEGORIES } from "@constants/categories";
// ...existing code...
import NewsContent from "@app/dai-dien-gioi-chu/components/card-news";
import ListFilter from "@app/dai-dien-gioi-chu/components/list-filter";
import { Pagination} from "@components/base/pagination";
import Image from "next/image";
import { useGetNews } from "@api/endpoints/news";
......@@ -21,38 +22,7 @@ export default function Page() {
return (
<div className="min-h-screen container mx-auto p-4">
<div className="w-full flex flex-col gap-5">
<ListCategory
categories={[
{
title: "Tin VCCI",
href: `${PATHS.mediaInformation}/tin-vcci`,
},
{
title: "Tin kinh tế",
href: `${PATHS.mediaInformation}/tin-kinh-te`,
},
{
title: "Tin doanh nghiệp",
href: `${PATHS.mediaInformation}/tin-doanh-nghiep`,
},
{
title: "Chuyên đề",
href: `${PATHS.mediaInformation}/chuyen-de`,
},
{
title: "Thông tin chính sách và pháp luật",
href: `${PATHS.mediaInformation}/thong-tin-chinh-sach-va-phap-luat`,
},
{
title: "Ấn phẩm",
href: `${PATHS.mediaInformation}/an-pham`,
},
{
title: "Thư viện tài liệu",
href: `${PATHS.mediaInformation}/thu-vien-tai-lieu`,
},
]}
/>
<ListCategory categories={MEDIA_INFORMATION_CATEGORIES} />
<div className="grid grid-cols-1 lg:grid-cols-3 gap-6">
{/* Main content */}
......@@ -76,7 +46,7 @@ export default function Page() {
{/* Sidebar */}
<aside className="space-y-6">
<EventFilter />
<ListFilter />
<div className="bg-white border rounded-md overflow-hidden">
<div className="w-full h-56 relative bg-gray-100">
......
"use client";
import React, { useState } from "react";
import ListCategory from "@app/dai-dien-gioi-chu/components/list-category";
import { PATHS } from '@constants/paths'
import EventFilter from "@app/dai-dien-gioi-chu/components/event-filter";
import { MEDIA_INFORMATION_CATEGORIES } from "@constants/categories";
// ...existing code...
import NewsContent from "@app/dai-dien-gioi-chu/components/card-news";
import { Pagination} from "@components/base/pagination";
import ListFilter from "@app/dai-dien-gioi-chu/components/list-filter";
import Image from "next/image";
import { useGetNews } from "@api/endpoints/news";
import { GetNewsResponseType } from "@api/types/NewsPage.type";
......@@ -21,38 +22,7 @@ export default function Page() {
return (
<div className="min-h-screen container mx-auto p-4">
<div className="w-full flex flex-col gap-5">
<ListCategory
categories={[
{
title: "Tin VCCI",
href: `${PATHS.mediaInformation}/tin-vcci`,
},
{
title: "Tin kinh tế",
href: `${PATHS.mediaInformation}/tin-kinh-te`,
},
{
title: "Tin doanh nghiệp",
href: `${PATHS.mediaInformation}/tin-doanh-nghiep`,
},
{
title: "Chuyên đề",
href: `${PATHS.mediaInformation}/chuyen-de`,
},
{
title: "Thông tin chính sách và pháp luật",
href: `${PATHS.mediaInformation}/thong-tin-chinh-sach-va-phap-luat`,
},
{
title: "Ấn phẩm",
href: `${PATHS.mediaInformation}/an-pham`,
},
{
title: "Thư viện tài liệu",
href: `${PATHS.mediaInformation}/thu-vien-tai-lieu`,
},
]}
/>
<ListCategory categories={MEDIA_INFORMATION_CATEGORIES} />
<div className="grid grid-cols-1 lg:grid-cols-3 gap-6">
{/* Main content */}
......@@ -76,7 +46,7 @@ export default function Page() {
{/* Sidebar */}
<aside className="space-y-6">
<EventFilter />
<ListFilter />
<div className="bg-white border rounded-md overflow-hidden">
<div className="w-full h-56 relative bg-gray-100">
......
"use client";
import React, { useState } from "react";
import ListCategory from "@app/dai-dien-gioi-chu/components/list-category";
import { PATHS } from '@constants/paths'
import EventFilter from "@app/dai-dien-gioi-chu/components/event-filter";
import { MEDIA_INFORMATION_CATEGORIES } from "@constants/categories";
// ...existing code...
import ListFilter from "@app/dai-dien-gioi-chu/components/list-filter";
import NewsContent from "@app/dai-dien-gioi-chu/components/card-news";
import { Pagination} from "@components/base/pagination";
import Image from "next/image";
......@@ -21,38 +22,7 @@ export default function Page() {
return (
<div className="min-h-screen container mx-auto p-4">
<div className="w-full flex flex-col gap-5">
<ListCategory
categories={[
{
title: "Tin VCCI",
href: `${PATHS.mediaInformation}/tin-vcci`,
},
{
title: "Tin kinh tế",
href: `${PATHS.mediaInformation}/tin-kinh-te`,
},
{
title: "Tin doanh nghiệp",
href: `${PATHS.mediaInformation}/tin-doanh-nghiep`,
},
{
title: "Chuyên đề",
href: `${PATHS.mediaInformation}/chuyen-de`,
},
{
title: "Thông tin chính sách và pháp luật",
href: `${PATHS.mediaInformation}/thong-tin-chinh-sach-va-phap-luat`,
},
{
title: "Ấn phẩm",
href: `${PATHS.mediaInformation}/an-pham`,
},
{
title: "Thư viện tài liệu",
href: `${PATHS.mediaInformation}/thu-vien-tai-lieu`,
},
]}
/>
<ListCategory categories={MEDIA_INFORMATION_CATEGORIES} />
<div className="grid grid-cols-1 lg:grid-cols-3 gap-6">
{/* Main content */}
......@@ -76,7 +46,7 @@ export default function Page() {
{/* Sidebar */}
<aside className="space-y-6">
<EventFilter />
<ListFilter />
<div className="bg-white border rounded-md overflow-hidden">
<div className="w-full h-56 relative bg-gray-100">
......
"use client";
import React, { useState } from "react";
import ListCategory from "@app/dai-dien-gioi-chu/components/list-category";
import { PATHS } from '@constants/paths'
import EventFilter from "@app/dai-dien-gioi-chu/components/event-filter";
import { MEDIA_INFORMATION_CATEGORIES } from "@constants/categories";
// ...existing code...
import NewsContent from "@app/dai-dien-gioi-chu/components/card-news";
import { Pagination} from "@components/base/pagination";
import Image from "next/image";
......@@ -21,38 +21,7 @@ export default function Page() {
return (
<div className="min-h-screen container mx-auto p-4">
<div className="w-full flex flex-col gap-5">
<ListCategory
categories={[
{
title: "Tin VCCI",
href: `${PATHS.mediaInformation}/tin-vcci`,
},
{
title: "Tin kinh tế",
href: `${PATHS.mediaInformation}/tin-kinh-te`,
},
{
title: "Tin doanh nghiệp",
href: `${PATHS.mediaInformation}/tin-doanh-nghiep`,
},
{
title: "Chuyên đề",
href: `${PATHS.mediaInformation}/chuyen-de`,
},
{
title: "Thông tin chính sách và pháp luật",
href: `${PATHS.mediaInformation}/thong-tin-chinh-sach-va-phap-luat`,
},
{
title: "Ấn phẩm",
href: `${PATHS.mediaInformation}/an-pham`,
},
{
title: "Thư viện tài liệu",
href: `${PATHS.mediaInformation}/thu-vien-tai-lieu`,
},
]}
/>
<ListCategory categories={MEDIA_INFORMATION_CATEGORIES} />
<div className="grid grid-cols-1 lg:grid-cols-3 gap-6">
{/* Main content */}
......@@ -76,7 +45,7 @@ export default function Page() {
{/* Sidebar */}
<aside className="space-y-6">
<EventFilter />
{/* <EventFilter /> */}
<div className="bg-white border rounded-md overflow-hidden">
<div className="w-full h-56 relative bg-gray-100">
......
"use client";
import React, { useState } from "react";
import ListCategory from "@app/dai-dien-gioi-chu/components/list-category";
import { PATHS } from '@constants/paths'
import EventFilter from "@app/dai-dien-gioi-chu/components/event-filter";
import { MEDIA_INFORMATION_CATEGORIES } from "@constants/categories";
// ...existing code...
import NewsContent from "@app/dai-dien-gioi-chu/components/card-news";
import ListFilter from "@app/dai-dien-gioi-chu/components/list-filter";
import EventCalendar from "@app/dai-dien-gioi-chu/components/event-calendar";
import { Pagination} from "@components/base/pagination";
import Image from "next/image";
import { useGetNews } from "@api/endpoints/news";
......@@ -21,38 +23,7 @@ export default function Page() {
return (
<div className="min-h-screen container mx-auto p-4">
<div className="w-full flex flex-col gap-5">
<ListCategory
categories={[
{
title: "Tin VCCI",
href: `${PATHS.mediaInformation}/tin-vcci`,
},
{
title: "Tin kinh tế",
href: `${PATHS.mediaInformation}/tin-kinh-te`,
},
{
title: "Tin doanh nghiệp",
href: `${PATHS.mediaInformation}/tin-doanh-nghiep`,
},
{
title: "Chuyên đề",
href: `${PATHS.mediaInformation}/chuyen-de`,
},
{
title: "Thông tin chính sách và pháp luật",
href: `${PATHS.mediaInformation}/thong-tin-chinh-sach-va-phap-luat`,
},
{
title: "Ấn phẩm",
href: `${PATHS.mediaInformation}/an-pham`,
},
{
title: "Thư viện tài liệu",
href: `${PATHS.mediaInformation}/thu-vien-tai-lieu`,
},
]}
/>
<ListCategory categories={MEDIA_INFORMATION_CATEGORIES} />
<div className="grid grid-cols-1 lg:grid-cols-3 gap-6">
{/* Main content */}
......@@ -76,8 +47,8 @@ export default function Page() {
{/* Sidebar */}
<aside className="space-y-6">
<EventFilter />
<ListFilter />
<EventCalendar/>
<div className="bg-white border rounded-md overflow-hidden">
<div className="w-full h-56 relative bg-gray-100">
<Image
......
"use client";
import React, { useState } from "react";
import ListCategory from "@app/dai-dien-gioi-chu/components/list-category";
import { PATHS } from "@constants/paths";
import ListFilter from "@app/dai-dien-gioi-chu/components/list-filter";
import { TRADE_PROMOTION_CATEGORIES } from "@constants/categories";
import NewsContent from "@app/dai-dien-gioi-chu/components/card-news";
import EventCalendar from "@app/dai-dien-gioi-chu/components/event-calendar";
import { Pagination } from "@components/base/pagination";
import Image from "next/image";
import { useGetNews } from "@api/endpoints/news";
......@@ -21,26 +21,7 @@ export default function Page() {
return (
<div className="min-h-screen container mx-auto p-4">
<div className="w-full flex flex-col gap-5">
<ListCategory
categories={[
{
title: "Hồ sơ thị trường",
href: `${PATHS.marketProfile}/`,
},
{
title: "Môi trường kinh doanh",
href: `${PATHS.tradePromotion}/moi-truong-kinh-doanh`,
},
{
title: "Cơ hội kinh doanh",
href: `${PATHS.tradePromotion}/co-hoi-kinh-doanh`,
},
{
title: "Hỗ trợ kinh doanh",
href: `${PATHS.tradePromotion}/ho-tro-kinh-doanh`,
},
]}
/>
<ListCategory categories={TRADE_PROMOTION_CATEGORIES} />
<div className="grid grid-cols-1 lg:grid-cols-3 gap-6">
{/* Main content */}
......@@ -71,7 +52,7 @@ export default function Page() {
{/* Sidebar */}
<aside className="space-y-6">
<ListFilter />
<EventCalendar />
<div className="bg-white border rounded-md overflow-hidden">
<div className="w-full h-56 relative bg-gray-100">
......
"use client";
import React, { useState } from "react";
import ListCategory from "@app/dai-dien-gioi-chu/components/list-category";
import { PATHS } from "@constants/paths";
import ListFilter from "@app/dai-dien-gioi-chu/components/list-filter";
import { TRADE_PROMOTION_CATEGORIES } from "@constants/categories";
import NewsContent from "@app/dai-dien-gioi-chu/components/card-news";
import { Pagination } from "@components/base/pagination";
import Image from "next/image";
......@@ -21,26 +20,7 @@ export default function Page() {
return (
<div className="min-h-screen container mx-auto p-4">
<div className="w-full flex flex-col gap-5">
<ListCategory
categories={[
{
title: "Hồ sơ thị trường",
href: `${PATHS.marketProfile}/`,
},
{
title: "Môi trường kinh doanh",
href: `${PATHS.tradePromotion}/moi-truong-kinh-doanh`,
},
{
title: "Cơ hội kinh doanh",
href: `${PATHS.tradePromotion}/co-hoi-kinh-doanh`,
},
{
title: "Hỗ trợ kinh doanh",
href: `${PATHS.tradePromotion}/ho-tro-kinh-doanh`,
},
]}
/>
<ListCategory categories={TRADE_PROMOTION_CATEGORIES} />
<div className="grid grid-cols-1 lg:grid-cols-3 gap-6">
{/* Main content */}
......@@ -71,7 +51,7 @@ export default function Page() {
{/* Sidebar */}
<aside className="space-y-6">
<ListFilter />
{/* <ListFilter /> */}
<div className="bg-white border rounded-md overflow-hidden">
<div className="w-full h-56 relative bg-gray-100">
......
"use client";
import React, { useState } from "react";
import ListCategory from "@app/dai-dien-gioi-chu/components/list-category";
import { PATHS } from "@constants/paths";
import ListFilter from "@app/dai-dien-gioi-chu/components/list-filter";
import { TRADE_PROMOTION_CATEGORIES } from "@constants/categories";
import NewsContent from "@app/dai-dien-gioi-chu/components/card-news";
import { Pagination } from "@components/base/pagination";
import Image from "next/image";
import EventCalendar from "@app/dai-dien-gioi-chu/components/event-calendar";
import { useGetNews } from "@api/endpoints/news";
import { GetNewsResponseType } from "@api/types/NewsPage.type";
export default function Page() {
......@@ -21,26 +21,7 @@ export default function Page() {
return (
<div className="min-h-screen container mx-auto p-4">
<div className="w-full flex flex-col gap-5">
<ListCategory
categories={[
{
title: "Hồ sơ thị trường",
href: `${PATHS.marketProfile}/`,
},
{
title: "Môi trường kinh doanh",
href: `${PATHS.tradePromotion}/moi-truong-kinh-doanh`,
},
{
title: "Cơ hội kinh doanh",
href: `${PATHS.tradePromotion}/co-hoi-kinh-doanh`,
},
{
title: "Hỗ trợ kinh doanh",
href: `${PATHS.tradePromotion}/ho-tro-kinh-doanh`,
},
]}
/>
<ListCategory categories={TRADE_PROMOTION_CATEGORIES} />
<div className="grid grid-cols-1 lg:grid-cols-3 gap-6">
{/* Main content */}
......@@ -71,7 +52,7 @@ export default function Page() {
{/* Sidebar */}
<aside className="space-y-6">
<ListFilter />
<EventCalendar />
<div className="bg-white border rounded-md overflow-hidden">
<div className="w-full h-56 relative bg-gray-100">
......
"use client";
import React, { useState } from "react";
import ListCategory from "@app/dai-dien-gioi-chu/components/list-category";
import { PATHS } from "@constants/paths";
import ListFilter from "@app/dai-dien-gioi-chu/components/list-filter";
import { TRADE_PROMOTION_CATEGORIES } from "@constants/categories";
import NewsContent from "@app/dai-dien-gioi-chu/components/card-news";
import { Pagination } from "@components/base/pagination";
import Image from "next/image";
......@@ -21,26 +20,7 @@ export default function Page() {
return (
<div className="min-h-screen container mx-auto p-4">
<div className="w-full flex flex-col gap-5">
<ListCategory
categories={[
{
title: "Hồ sơ thị trường",
href: `${PATHS.marketProfile}/`,
},
{
title: "Môi trường kinh doanh",
href: `${PATHS.tradePromotion}/moi-truong-kinh-doanh`,
},
{
title: "Cơ hội kinh doanh",
href: `${PATHS.tradePromotion}/co-hoi-kinh-doanh`,
},
{
title: "Hỗ trợ kinh doanh",
href: `${PATHS.tradePromotion}/ho-tro-kinh-doanh`,
},
]}
/>
<ListCategory categories={TRADE_PROMOTION_CATEGORIES} />
<div className="grid grid-cols-1 lg:grid-cols-3 gap-6">
{/* Main content */}
......@@ -71,7 +51,7 @@ export default function Page() {
{/* Sidebar */}
<aside className="space-y-6">
<ListFilter />
{/* <ListFilter /> */}
<div className="bg-white border rounded-md overflow-hidden">
<div className="w-full h-56 relative bg-gray-100">
......
import { PATHS } from "@constants/paths";
export const TRADE_PROMOTION_CATEGORIES = [
{
title: "Hồ sơ thị trường",
href: `${PATHS.marketProfile}/`,
},
{
title: "Môi trường kinh doanh",
href: `${PATHS.tradePromotion}/moi-truong-kinh-doanh`,
},
{
title: "Cơ hội kinh doanh",
href: `${PATHS.tradePromotion}/co-hoi-kinh-doanh`,
},
{
title: "Hỗ trợ kinh doanh",
href: `${PATHS.tradePromotion}/ho-tro-kinh-doanh`,
},
];
export const OWNER_REPRESENTATIVES_CATEGORIES = [
{
title: "Chức năng Đại diện Người sử dụng lao động",
href: `${PATHS.ownerRepresentatives}/chuc-nang-dai-dien-nguoi-su-dung-lao-dong`,
},
{
title: "Sự kiện – Tập huấn NSDLĐ",
href: `${PATHS.ownerRepresentatives}/tap-huan-nsdld`,
},
{
title: "Tin liên quan",
href: `${PATHS.ownerRepresentatives}/tin-lien-quan`,
},
{
title: "Chủ đề",
href: `${PATHS.ownerRepresentatives}/chu-de`,
},
];
export const EVENT_CATEGORIES = [
{
title: "Sự kiện",
href: `${PATHS.event}/su-kien`,
},
{
title: "Đào tạo",
href: `${PATHS.event}/dao-tao`,
},
];
export const MEDIA_INFORMATION_CATEGORIES = [
{
title: "Tin VCCI",
href: `${PATHS.mediaInformation}/tin-vcci`,
},
{
title: "Tin kinh tế",
href: `${PATHS.mediaInformation}/tin-kinh-te`,
},
{
title: "Tin doanh nghiệp",
href: `${PATHS.mediaInformation}/tin-doanh-nghiep`,
},
{
title: "Chuyên đề",
href: `${PATHS.mediaInformation}/chuyen-de`,
},
{
title: "Thông tin chính sách và pháp luật",
href: `${PATHS.mediaInformation}/thong-tin-chinh-sach-va-phap-luat`,
},
{
title: "Ấn phẩm",
href: `${PATHS.mediaInformation}/an-pham`,
},
{
title: "Thư viện tài liệu",
href: `${PATHS.mediaInformation}/thu-vien-tai-lieu`,
},
];
export type CategoryItem = {
title: string;
href: string;
};
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment