import { c as createComponent, m as maybeRenderHead, a as addAttribute, r as renderTemplate, b as createAstro, d as renderComponent } from '../chunks/astro/server_DrnzQWw3.mjs'; import 'kleur/colors'; import { $ as $$BaseLayout } from '../chunks/BaseLayout_Bc2tHXHa.mjs'; import 'clsx'; import { i as isAdminAuthenticated } from '../chunks/adminAuth_CY4OwU1a.mjs'; import { r as readCms } from '../chunks/cms_CRTVymfB.mjs'; export { renderers } from '../renderers.mjs'; const $$Astro$1 = createAstro(); const $$AdminPager = createComponent(($$result, $$props, $$slots) => { const Astro2 = $$result.createAstro($$Astro$1, $$props, $$slots); Astro2.self = $$AdminPager; const { currentPage, totalPages, tab, pageParam } = Astro2.props; const href = (page) => `/admin/?tab=${tab}&${pageParam}=${page}`; const pages = Array.from({ length: totalPages }, (_, index) => index + 1); const previousPage = Math.max(1, currentPage - 1); const nextPage = Math.min(totalPages, currentPage + 1); return renderTemplate`${totalPages > 1 && renderTemplate`${maybeRenderHead()}`}`; }, "/Users/drfelfel/ruseemrooz/src/components/admin/AdminPager.astro", void 0); const $$Astro = createAstro(); const $$Index = createComponent(async ($$result, $$props, $$slots) => { const Astro2 = $$result.createAstro($$Astro, $$props, $$slots); Astro2.self = $$Index; if (!isAdminAuthenticated(Astro2)) { return Astro2.redirect("/admin/login/"); } const PAGE_SIZE = 8; const cms = await readCms(); const approvedPosts = cms.posts.filter((post) => post.status === "approved"); const pendingPosts = cms.posts.filter((post) => post.status === "pending"); const tassMemoryCount = cms.settings.agents?.tass?.processedLinks?.length ?? 0; const saved = Astro2.url.searchParams.has("saved"); const deleteError = Astro2.url.searchParams.has("deleteError"); const editSlug = Astro2.url.searchParams.get("edit"); const editingPost = cms.posts.find((post) => post.slug === editSlug); const postForForm = editingPost ?? { slug: "", title: "", category: cms.categories[0] ?? "", time: "\u0647\u0645\u200C\u0627\u06A9\u0646\u0648\u0646", readTime: "\u06F3 \u062F\u0642\u06CC\u0642\u0647", excerpt: "", status: "pending", body: [], image: "", thumbnail: "", urgent: false, sidebar: false }; const selectedImage = postForForm.image || ""; const selectedThumbnail = postForForm.thumbnail || selectedImage; const activeTab = Astro2.url.searchParams.get("tab") === "approved" ? "approved" : "pending"; const totalPagesFor = (items) => Math.max(1, Math.ceil(items.length / PAGE_SIZE)); const clampPage = (param, total) => { const parsed = Number(Astro2.url.searchParams.get(param) ?? "1"); return Math.min(Math.max(1, Number.isFinite(parsed) ? parsed : 1), total); }; const pendingTotalPages = totalPagesFor(pendingPosts); const approvedTotalPages = totalPagesFor(approvedPosts); const pendingPage = clampPage("pendingPage", pendingTotalPages); const approvedPage = clampPage("approvedPage", approvedTotalPages); const pendingSlice = pendingPosts.slice((pendingPage - 1) * PAGE_SIZE, pendingPage * PAGE_SIZE); const approvedSlice = approvedPosts.slice((approvedPage - 1) * PAGE_SIZE, approvedPage * PAGE_SIZE); const tabClass = (id) => [ "px-4 h-9 rounded-lg border text-xs font-bold transition-colors", id === activeTab ? "bg-brand text-white border-brand" : "bg-white text-gray-700 border-gray-200 hover:bg-gray-50" ].join(" "); return renderTemplate`${renderComponent($$result, "BaseLayout", $$BaseLayout, { "title": "\u067E\u0646\u0644 \u0627\u062F\u0645\u06CC\u0646 | \u0631\u0648\u0633 \u0627\u0645\u0631\u0648\u0632" }, { "default": async ($$result2) => renderTemplate` ${maybeRenderHead()}
مدیریت محتوا

پنل سبک روس امروز

تایید نوشته‌های AI، مدیریت دسته‌ها، خبر فوری، آگهی و چیدمان صفحه اول

${saved && renderTemplate`

تغییرات ذخیره شد.

`} ${deleteError && renderTemplate`

برای حذف باید دقیقاً confirm را وارد کنید.

`}

مدیریت حذف اخبار

حذف همه اخبار نیاز به تایپ \`confirm\` دارد و قابل بازگشت نیست.

${pendingSlice.length === 0 && renderTemplate`

نوشته تایید نشده‌ای وجود ندارد.

`} ${pendingSlice.map((post) => renderTemplate`
${post.category}

${post.title}

${post.excerpt}

ویرایش
`)} ${renderComponent($$result2, "AdminPager", $$AdminPager, { "currentPage": pendingPage, "totalPages": pendingTotalPages, "tab": "pending", "pageParam": "pendingPage" })}
${approvedSlice.length === 0 && renderTemplate`

نوشته تایید شده‌ای وجود ندارد.

`} ${approvedSlice.map((post) => renderTemplate`
${post.category} ${post.urgent && renderTemplate`فوری`} ${post.sidebar && renderTemplate`پنل کناری`} ${(cms.settings.breakingNews.postSlugs ?? []).includes(post.slug) && renderTemplate`نوار بالایی`} ${cms.settings.homeLayout.featuredSlug === post.slug && renderTemplate`خبر اصلی`}

${post.title}

ویرایش
${post.urgent ? "\u0628\u0631\u062F\u0627\u0634\u062A\u0646 \u0641\u0648\u0631\u06CC" : "\u0641\u0648\u0631\u06CC \u06A9\u0646"}
${post.sidebar ? "\u062D\u0630\u0641 \u0627\u0632 \u067E\u0646\u0644 \u06A9\u0646\u0627\u0631\u06CC" : "\u0627\u0641\u0632\u0648\u062F\u0646 \u0628\u0647 \u067E\u0646\u0644 \u06A9\u0646\u0627\u0631\u06CC"}
`)} ${renderComponent($$result2, "AdminPager", $$AdminPager, { "currentPage": approvedPage, "totalPages": approvedTotalPages, "tab": "approved", "pageParam": "approvedPage" })}
` })} `; }, "/Users/drfelfel/ruseemrooz/src/pages/admin/index.astro", void 0); const $$file = "/Users/drfelfel/ruseemrooz/src/pages/admin/index.astro"; const $$url = "/admin"; const _page = /*#__PURE__*/Object.freeze(/*#__PURE__*/Object.defineProperty({ __proto__: null, default: $$Index, file: $$file, url: $$url }, Symbol.toStringTag, { value: 'Module' })); const page = () => _page; export { page };