@vitnode/blog 1.2.0-canary.78 → 2.0.0-canary.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/src/admin/content.d.ts +5 -0
- package/dist/src/admin/content.d.ts.map +1 -0
- package/dist/src/admin/content.js +1 -0
- package/dist/src/admin/nav.d.ts +41 -0
- package/dist/src/admin/nav.d.ts.map +1 -0
- package/dist/src/admin/nav.js +1 -0
- package/dist/src/api/lib/events.d.ts +11 -3
- package/dist/src/api/lib/events.d.ts.map +1 -1
- package/dist/src/api/lib/events.js +1 -1
- package/dist/src/api/modules/admin/admin.module.d.ts +1 -218
- package/dist/src/api/modules/admin/admin.module.d.ts.map +1 -1
- package/dist/src/api/modules/admin/admin.module.js +1 -1
- package/dist/src/config.api.d.ts.map +1 -1
- package/dist/src/config.api.js +1 -1
- package/dist/src/config.d.ts.map +1 -1
- package/dist/src/config.js +1 -1
- package/dist/src/content/category.d.ts +5 -0
- package/dist/src/content/category.d.ts.map +1 -0
- package/dist/src/content/category.js +1 -0
- package/dist/src/content/post.d.ts +10 -0
- package/dist/src/content/post.d.ts.map +1 -0
- package/dist/src/content/post.js +1 -0
- package/dist/src/database/categories.d.ts +10 -77
- package/dist/src/database/categories.d.ts.map +1 -1
- package/dist/src/database/categories.js +1 -1
- package/dist/src/database/posts.d.ts +22 -92
- package/dist/src/database/posts.d.ts.map +1 -1
- package/dist/src/database/posts.js +1 -1
- package/dist/src/locales/en.json +50 -73
- package/dist/src/locales/index.d.ts.map +1 -1
- package/dist/src/locales/index.js +1 -1
- package/dist/src/locales/pl.json +69 -0
- package/dist/src/views/admin/article/editor-field.d.ts +4 -0
- package/dist/src/views/admin/article/editor-field.d.ts.map +1 -0
- package/dist/src/views/admin/article/editor-field.js +1 -0
- package/dist/src/views/admin/article/form-layout.d.ts +3 -0
- package/dist/src/views/admin/article/form-layout.d.ts.map +1 -0
- package/dist/src/views/admin/article/form-layout.js +1 -0
- package/dist/src/views/admin/category/color-cell.d.ts +4 -0
- package/dist/src/views/admin/category/color-cell.d.ts.map +1 -0
- package/dist/src/views/admin/category/color-cell.js +1 -0
- package/dist/src/views/admin/category/color-field.d.ts +3 -0
- package/dist/src/views/admin/category/color-field.d.ts.map +1 -0
- package/dist/src/views/admin/category/color-field.js +1 -0
- package/dist/vitest.config.d.ts +3 -0
- package/dist/vitest.config.d.ts.map +1 -0
- package/package.json +16 -10
- package/src/locales/en.json +50 -73
- package/src/locales/index.ts +1 -0
- package/src/locales/pl.json +69 -0
- package/tsconfig.build.json +6 -1
- package/dist/src/api/lib/categories-language.d.ts +0 -10
- package/dist/src/api/lib/categories-language.d.ts.map +0 -1
- package/dist/src/api/lib/categories-language.js +0 -1
- package/dist/src/api/lib/posts-language.d.ts +0 -17
- package/dist/src/api/lib/posts-language.d.ts.map +0 -1
- package/dist/src/api/lib/posts-language.js +0 -1
- package/dist/src/api/lib/search.d.ts +0 -13
- package/dist/src/api/lib/search.d.ts.map +0 -1
- package/dist/src/api/lib/search.js +0 -1
- package/dist/src/api/modules/admin/categories/categories.admin.module.d.ts +0 -100
- package/dist/src/api/modules/admin/categories/categories.admin.module.d.ts.map +0 -1
- package/dist/src/api/modules/admin/categories/categories.admin.module.js +0 -1
- package/dist/src/api/modules/admin/categories/routes/create.route.d.ts +0 -47
- package/dist/src/api/modules/admin/categories/routes/create.route.d.ts.map +0 -1
- package/dist/src/api/modules/admin/categories/routes/create.route.js +0 -1
- package/dist/src/api/modules/admin/categories/routes/delete.route.d.ts +0 -21
- package/dist/src/api/modules/admin/categories/routes/delete.route.d.ts.map +0 -1
- package/dist/src/api/modules/admin/categories/routes/delete.route.js +0 -1
- package/dist/src/api/modules/admin/categories/routes/edit.route.d.ts +0 -46
- package/dist/src/api/modules/admin/categories/routes/edit.route.d.ts.map +0 -1
- package/dist/src/api/modules/admin/categories/routes/edit.route.js +0 -1
- package/dist/src/api/modules/admin/posts/posts.admin.module.d.ts +0 -121
- package/dist/src/api/modules/admin/posts/posts.admin.module.d.ts.map +0 -1
- package/dist/src/api/modules/admin/posts/posts.admin.module.js +0 -1
- package/dist/src/api/modules/admin/posts/routes/create.route.d.ts +0 -67
- package/dist/src/api/modules/admin/posts/routes/create.route.d.ts.map +0 -1
- package/dist/src/api/modules/admin/posts/routes/create.route.js +0 -1
- package/dist/src/api/modules/admin/posts/routes/delete.route.d.ts +0 -21
- package/dist/src/api/modules/admin/posts/routes/delete.route.d.ts.map +0 -1
- package/dist/src/api/modules/admin/posts/routes/delete.route.js +0 -1
- package/dist/src/api/modules/admin/posts/routes/edit.route.d.ts +0 -55
- package/dist/src/api/modules/admin/posts/routes/edit.route.d.ts.map +0 -1
- package/dist/src/api/modules/admin/posts/routes/edit.route.js +0 -1
- package/dist/src/api/modules/categories/categories.module.d.ts +0 -75
- package/dist/src/api/modules/categories/categories.module.d.ts.map +0 -1
- package/dist/src/api/modules/categories/categories.module.js +0 -1
- package/dist/src/api/modules/categories/routes/get.route.d.ts +0 -62
- package/dist/src/api/modules/categories/routes/get.route.d.ts.map +0 -1
- package/dist/src/api/modules/categories/routes/get.route.js +0 -1
- package/dist/src/api/modules/categories/test.route.d.ts +0 -27
- package/dist/src/api/modules/categories/test.route.d.ts.map +0 -1
- package/dist/src/api/modules/categories/test.route.js +0 -1
- package/dist/src/api/modules/posts/posts.module.d.ts +0 -73
- package/dist/src/api/modules/posts/posts.module.d.ts.map +0 -1
- package/dist/src/api/modules/posts/posts.module.js +0 -1
- package/dist/src/api/modules/posts/routes/get.route.d.ts +0 -105
- package/dist/src/api/modules/posts/routes/get.route.d.ts.map +0 -1
- package/dist/src/api/modules/posts/routes/get.route.js +0 -1
- package/dist/src/database/index.d.ts +0 -4
- package/dist/src/database/index.d.ts.map +0 -1
- package/dist/src/database/index.js +0 -1
- package/dist/src/database/relations.d.ts +0 -7
- package/dist/src/database/relations.d.ts.map +0 -1
- package/dist/src/database/relations.js +0 -1
- package/dist/src/routes/admin/blog/categories/page.d.ts +0 -9
- package/dist/src/routes/admin/blog/categories/page.d.ts.map +0 -1
- package/dist/src/routes/admin/blog/categories/page.js +0 -1
- package/dist/src/routes/admin/blog/posts/page.d.ts +0 -9
- package/dist/src/routes/admin/blog/posts/page.d.ts.map +0 -1
- package/dist/src/routes/admin/blog/posts/page.js +0 -1
- package/dist/src/routes/breadcrumb/admin/blog/categories/page.d.ts +0 -2
- package/dist/src/routes/breadcrumb/admin/blog/categories/page.d.ts.map +0 -1
- package/dist/src/routes/breadcrumb/admin/blog/categories/page.js +0 -1
- package/dist/src/routes/breadcrumb/admin/blog/posts/page.d.ts +0 -2
- package/dist/src/routes/breadcrumb/admin/blog/posts/page.d.ts.map +0 -1
- package/dist/src/routes/breadcrumb/admin/blog/posts/page.js +0 -1
- package/dist/src/views/admin/categories/actions/actions.d.ts +0 -3
- package/dist/src/views/admin/categories/actions/actions.d.ts.map +0 -1
- package/dist/src/views/admin/categories/actions/actions.js +0 -1
- package/dist/src/views/admin/categories/actions/create-edit/create-edit.d.ts +0 -8
- package/dist/src/views/admin/categories/actions/create-edit/create-edit.d.ts.map +0 -1
- package/dist/src/views/admin/categories/actions/create-edit/create-edit.js +0 -1
- package/dist/src/views/admin/categories/actions/create-edit/mutation-api.server.d.ts +0 -11
- package/dist/src/views/admin/categories/actions/create-edit/mutation-api.server.d.ts.map +0 -1
- package/dist/src/views/admin/categories/actions/create-edit/mutation-api.server.js +0 -1
- package/dist/src/views/admin/categories/table/actions/delete/delete-action.d.ts +0 -5
- package/dist/src/views/admin/categories/table/actions/delete/delete-action.d.ts.map +0 -1
- package/dist/src/views/admin/categories/table/actions/delete/delete-action.js +0 -1
- package/dist/src/views/admin/categories/table/actions/delete/mutation-api.server.d.ts +0 -4
- package/dist/src/views/admin/categories/table/actions/delete/mutation-api.server.d.ts.map +0 -1
- package/dist/src/views/admin/categories/table/actions/delete/mutation-api.server.js +0 -1
- package/dist/src/views/admin/categories/table/actions/edit-action.d.ts +0 -9
- package/dist/src/views/admin/categories/table/actions/edit-action.d.ts.map +0 -1
- package/dist/src/views/admin/categories/table/actions/edit-action.js +0 -1
- package/dist/src/views/admin/categories/table/categories-admin-view.d.ts +0 -4
- package/dist/src/views/admin/categories/table/categories-admin-view.d.ts.map +0 -1
- package/dist/src/views/admin/categories/table/categories-admin-view.js +0 -1
- package/dist/src/views/admin/posts/actions/actions.d.ts +0 -3
- package/dist/src/views/admin/posts/actions/actions.d.ts.map +0 -1
- package/dist/src/views/admin/posts/actions/actions.js +0 -1
- package/dist/src/views/admin/posts/actions/create-edit/create-edit.d.ts +0 -9
- package/dist/src/views/admin/posts/actions/create-edit/create-edit.d.ts.map +0 -1
- package/dist/src/views/admin/posts/actions/create-edit/create-edit.js +0 -1
- package/dist/src/views/admin/posts/actions/create-edit/multi-lang-fields.d.ts +0 -10
- package/dist/src/views/admin/posts/actions/create-edit/multi-lang-fields.d.ts.map +0 -1
- package/dist/src/views/admin/posts/actions/create-edit/multi-lang-fields.js +0 -1
- package/dist/src/views/admin/posts/actions/create-edit/mutation-api.server.d.ts +0 -11
- package/dist/src/views/admin/posts/actions/create-edit/mutation-api.server.d.ts.map +0 -1
- package/dist/src/views/admin/posts/actions/create-edit/mutation-api.server.js +0 -1
- package/dist/src/views/admin/posts/table/actions/delete/delete-action.d.ts +0 -5
- package/dist/src/views/admin/posts/table/actions/delete/delete-action.d.ts.map +0 -1
- package/dist/src/views/admin/posts/table/actions/delete/delete-action.js +0 -1
- package/dist/src/views/admin/posts/table/actions/delete/mutation-api.server.d.ts +0 -4
- package/dist/src/views/admin/posts/table/actions/delete/mutation-api.server.d.ts.map +0 -1
- package/dist/src/views/admin/posts/table/actions/delete/mutation-api.server.js +0 -1
- package/dist/src/views/admin/posts/table/actions/edit-action.d.ts +0 -9
- package/dist/src/views/admin/posts/table/actions/edit-action.d.ts.map +0 -1
- package/dist/src/views/admin/posts/table/actions/edit-action.js +0 -1
- package/dist/src/views/admin/posts/table/posts-admin-view.d.ts +0 -4
- package/dist/src/views/admin/posts/table/posts-admin-view.d.ts.map +0 -1
- package/dist/src/views/admin/posts/table/posts-admin-view.js +0 -1
- package/src/routes/admin/blog/categories/page.tsx +0 -64
- package/src/routes/admin/blog/posts/page.tsx +0 -64
- package/src/routes/breadcrumb/admin/blog/categories/page.tsx +0 -5
- package/src/routes/breadcrumb/admin/blog/posts/page.tsx +0 -5
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{jsx as _jsx}from"react/jsx-runtime";import{AutoForm}from"@vitnode/core/components/form/auto-form";import{AutoFormColor}from"@vitnode/core/components/form/fields/color";import{AutoFormInput}from"@vitnode/core/components/form/fields/input";import{useDialog}from"@vitnode/core/components/ui/dialog";import{getLangValue,multiLangValueSchema}from"@vitnode/core/lib/helpers/multi-lang";import{usePathname,useRouter}from"@vitnode/core/lib/navigation";import{useLocale,useTranslations}from"next-intl";import{toast}from"sonner";import{z}from"zod";import{createMutationApi,editMutationApi}from"./mutation-api.server.js";export const CreateEditActionCategoriesAdmin=({data})=>{const t=useTranslations("@vitnode/blog.admin.categories");const tCore=useTranslations("core.global.errors");const{setOpen}=useDialog();const{push}=useRouter();const pathname=usePathname();const locale=useLocale();const formSchema=z.object({title:multiLangValueSchema({minLength:1,maxLength:100}).min(1).default(data?.titleTranslations??[]),color:z.string().default(data?.color??"")});const onSubmit=async values=>{const mutation=data?.id?await editMutationApi({id:data.id,...values}):await createMutationApi(values);if(mutation?.error){toast.error(tCore("title"),{description:tCore("internal_server_error")});return}toast.success(t(data?"edit.success":"create.success"),{description:getLangValue(values.title,locale)||values.title[0]?.value});setOpen?.(false);push(pathname)};return _jsx(AutoForm,{fields:[{id:"title",component:props=>_jsx(AutoFormInput,{label:t("create.form.title.label"),multiLang:true,...props})},{id:"color",component:props=>_jsx(AutoFormColor,{allowRemoveColor:true,label:t("create.form.color"),...props})}],formSchema:formSchema,onSubmit:onSubmit,submitButtonProps:{children:t(`${data?"edit":"create"}.submit`)}})};
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
import type { z } from "zod";
|
|
2
|
-
import type { zodCreateCategorySchema } from "../../../../../api/modules/admin/categories/routes/create.route";
|
|
3
|
-
export declare const createMutationApi: (body: z.infer<typeof zodCreateCategorySchema>) => Promise<{
|
|
4
|
-
error: string;
|
|
5
|
-
} | undefined>;
|
|
6
|
-
export declare const editMutationApi: ({ id, ...body }: z.infer<typeof zodCreateCategorySchema> & {
|
|
7
|
-
id: number;
|
|
8
|
-
}) => Promise<{
|
|
9
|
-
error: string;
|
|
10
|
-
} | undefined>;
|
|
11
|
-
//# sourceMappingURL=mutation-api.server.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"mutation-api.server.d.ts","sourceRoot":"","sources":["../../../../../../../src/views/admin/categories/actions/create-edit/mutation-api.server.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAK7B,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,iEAAiE,CAAC;AAI/G,eAAO,MAAM,iBAAiB,GAC5B,MAAM,CAAC,CAAC,KAAK,CAAC,OAAO,uBAAuB,CAAC;;cAoB9C,CAAC;AAEF,eAAO,MAAM,eAAe,GAAU,iBAGnC,CAAC,CAAC,KAAK,CAAC,OAAO,uBAAuB,CAAC,GAAG;IAAE,EAAE,EAAE,MAAM,CAAA;CAAE;;cAsB1D,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
"use server";import{fetcher}from"@vitnode/core/lib/fetcher";import{revalidatePath}from"next/cache";import{categoriesAdminModule}from"../../../../../api/modules/admin/categories/categories.admin.module.js";export const createMutationApi=async body=>{const res=await fetcher(categoriesAdminModule,{prefixPath:"/admin",method:"post",module:"categories",path:"/",args:{body}});if(res.status!==201){return{error:await res.text()}}revalidatePath("/[locale]/admin/(auth)/(plugins)/(vitnode-blog)/blog/categories","page")};export const editMutationApi=async({id,...body})=>{const res=await fetcher(categoriesAdminModule,{prefixPath:"/admin",method:"put",module:"categories",path:"/{id}",args:{params:{id},body}});if(res.status!==200){return{error:await res.text()}}revalidatePath("/[locale]/admin/(auth)/(plugins)/(vitnode-blog)/blog/categories","page")};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"delete-action.d.ts","sourceRoot":"","sources":["../../../../../../../../src/views/admin/categories/table/actions/delete/delete-action.tsx"],"names":[],"mappings":"AAmBA,eAAO,MAAM,YAAY,GAAI,eAAe;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,uCAmDxE,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
"use client";import{jsx as _jsx,jsxs as _jsxs}from"react/jsx-runtime";import{ConfirmActionAlertDialog}from"@vitnode/core/components/confirm-action/confirm-action-alert-dialog";import{useAdminStaffPermission}from"@vitnode/core/components/staff-permission/provider";import{Button}from"@vitnode/core/components/ui/button";import{Tooltip,TooltipContent,TooltipProvider,TooltipTrigger}from"@vitnode/core/components/ui/tooltip";import{Trash2Icon}from"lucide-react";import{useTranslations}from"next-intl";import{toast}from"sonner";import{CONFIG_PLUGIN}from"../../../../../../const.js";import{mutationApi}from"./mutation-api.server.js";export const DeleteAction=({title,id})=>{const t=useTranslations("@vitnode/blog.admin.categories.delete");const tGlobal=useTranslations("core.global");const canDelete=useAdminStaffPermission({plugin:CONFIG_PLUGIN.pluginId,module:"categories",permission:"can_delete"});if(!canDelete)return null;return _jsx(TooltipProvider,{children:_jsxs(Tooltip,{children:[_jsx(ConfirmActionAlertDialog,{description:t.rich("desc",{title:()=>_jsx("span",{className:"text-foreground font-bold",children:title})}),onSubmit:async({onClose})=>{const mutation=await mutationApi(id);if(mutation?.error){toast.error(tGlobal("errors.title"),{description:tGlobal("errors.internal_server_error")});return}toast.success(t("success"),{description:title});onClose()},textSubmit:t("confirm"),title:t("title"),children:_jsx(TooltipTrigger,{render:_jsx(Button,{"aria-label":t("title"),size:"icon",variant:"destructive",children:_jsx(Trash2Icon,{className:"size-4"})})})}),_jsx(TooltipContent,{children:t("title")})]})})};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"mutation-api.server.d.ts","sourceRoot":"","sources":["../../../../../../../../src/views/admin/categories/table/actions/delete/mutation-api.server.ts"],"names":[],"mappings":"AAOA,eAAO,MAAM,WAAW,GAAU,IAAI,MAAM;;cAqB3C,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
"use server";import{fetcher}from"@vitnode/core/lib/fetcher";import{revalidatePath}from"next/cache";import{categoriesAdminModule}from"../../../../../../api/modules/admin/categories/categories.admin.module.js";export const mutationApi=async id=>{const res=await fetcher(categoriesAdminModule,{prefixPath:"/admin",method:"delete",path:"/{id}",module:"categories",args:{params:{id}}});if(!res.ok){return{error:await res.text()}}revalidatePath("/[locale]/admin/(auth)/(plugins)/(vitnode-blog)/blog/categories","page")};
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
import React from "react";
|
|
2
|
-
declare const CreateEditActionCategoriesAdmin: React.ComponentType<{
|
|
3
|
-
data?: import("zod").infer<typeof import("../../../../../api/modules/categories/routes/get.route").zodCategorySchema> & {
|
|
4
|
-
id: number;
|
|
5
|
-
};
|
|
6
|
-
}>;
|
|
7
|
-
export declare const EditAction: (props: Required<React.ComponentProps<typeof CreateEditActionCategoriesAdmin>>) => React.JSX.Element | null;
|
|
8
|
-
export {};
|
|
9
|
-
//# sourceMappingURL=edit-action.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"edit-action.d.ts","sourceRoot":"","sources":["../../../../../../../src/views/admin/categories/table/actions/edit-action.tsx"],"names":[],"mappings":"AAuBA,OAAO,KAAK,MAAM,OAAO,CAAC;AAI1B,QAAA,MAAM,+BAA+B;;;;EAIpC,CAAC;AAEF,eAAO,MAAM,UAAU,GACrB,OAAO,QAAQ,CAAC,KAAK,CAAC,cAAc,CAAC,OAAO,+BAA+B,CAAC,CAAC,6BA8C9E,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
"use client";import{jsx as _jsx,jsxs as _jsxs}from"react/jsx-runtime";import{useAdminStaffPermission}from"@vitnode/core/components/staff-permission/provider";import{Button}from"@vitnode/core/components/ui/button";import{Dialog,DialogContent,DialogDescription,DialogHeader,DialogTitle,DialogTrigger}from"@vitnode/core/components/ui/dialog";import{Loader}from"@vitnode/core/components/ui/loader";import{Tooltip,TooltipContent,TooltipProvider,TooltipTrigger}from"@vitnode/core/components/ui/tooltip";import{getLangValue}from"@vitnode/core/lib/helpers/multi-lang";import{PencilIcon}from"lucide-react";import{useLocale,useTranslations}from"next-intl";import dynamic from"next/dynamic";import React from"react";import{CONFIG_PLUGIN}from"../../../../../const.js";const CreateEditActionCategoriesAdmin=dynamic(async()=>import("../../actions/create-edit/create-edit.js").then(mod=>({default:mod.CreateEditActionCategoriesAdmin})));export const EditAction=props=>{const t=useTranslations("@vitnode/blog.admin.categories.edit");const locale=useLocale();const canEdit=useAdminStaffPermission({plugin:CONFIG_PLUGIN.pluginId,module:"categories",permission:"can_edit"});if(!canEdit)return null;return _jsxs(Dialog,{children:[_jsx(TooltipProvider,{children:_jsxs(Tooltip,{children:[_jsx(TooltipTrigger,{render:_jsx(DialogTrigger,{render:_jsx(Button,{"aria-label":t("title"),size:"icon",variant:"ghost"}),children:_jsx(PencilIcon,{})})}),_jsx(TooltipContent,{children:t("title")})]})}),_jsxs(DialogContent,{children:[_jsxs(DialogHeader,{children:[_jsx(DialogTitle,{children:t("title")}),_jsx(DialogDescription,{children:getLangValue(props.data.titleTranslations,locale)||props.data.titleTranslations[0]?.value})]}),_jsx(React.Suspense,{fallback:_jsx(Loader,{}),children:_jsx(CreateEditActionCategoriesAdmin,{...props})})]})]})};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"categories-admin-view.d.ts","sourceRoot":"","sources":["../../../../../../src/views/admin/categories/table/categories-admin-view.tsx"],"names":[],"mappings":"AAWA,eAAO,MAAM,mBAAmB,GAAU,mBAEvC;IACD,YAAY,EAAE,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,SAAS,CAAC,CAAC,CAAC;CACtE,yCAsFA,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{jsx as _jsx,jsxs as _jsxs,Fragment as _Fragment}from"react/jsx-runtime";import{DateFormat}from"@vitnode/core/components/date-format";import{DataTable}from"@vitnode/core/components/table/data-table";import{fetcher}from"@vitnode/core/lib/fetcher";import{getLangValue}from"@vitnode/core/lib/helpers/multi-lang";import{getLocale,getTranslations}from"next-intl/server";import{categoriesModule}from"../../../../api/modules/categories/categories.module.js";import{DeleteAction}from"./actions/delete/delete-action.js";import{EditAction}from"./actions/edit-action.js";export const CategoriesAdminView=async({searchParams})=>{const t=await getTranslations("@vitnode/blog.admin.categories.table");const locale=await getLocale();const query=await searchParams;const res=await fetcher(categoriesModule,{path:"/",method:"get",module:"categories",args:{query},withPagination:true,options:{cache:"force-cache"}});const data=await res.json();return _jsx(DataTable,{columns:[{accessorKey:"id",header:"ID",className:"w-24"},{accessorKey:"title",header:t("title")},{accessorKey:"color",header:t("color"),className:"w-32",cell:({row})=>row.color?_jsxs("div",{className:"flex items-center gap-2",children:[_jsx("span",{className:"size-4 shrink-0 rounded-full border",style:{backgroundColor:row.color}}),_jsx("span",{className:"text-muted-foreground truncate text-sm",children:row.color})]}):_jsx("span",{className:"text-muted-foreground",children:"—"})},{accessorKey:"updatedAt",header:t("updated_at"),className:"w-48",cell:({row})=>_jsx(DateFormat,{date:row.updatedAt})},{id:"actions",header:"",align:"right",className:"w-10",cell:({row})=>_jsxs(_Fragment,{children:[_jsx(EditAction,{data:row}),_jsx(DeleteAction,{...row})]})}],edges:data.edges.map(edge=>({...edge,title:getLangValue(edge.titleTranslations,locale)||edge.titleTranslations[0]?.value||""})),id:"categories-table",order:{columns:["createdAt","updatedAt"],defaultOrder:{column:"createdAt",order:"desc"}},pageInfo:data.pageInfo})};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"actions.d.ts","sourceRoot":"","sources":["../../../../../../src/views/admin/posts/actions/actions.tsx"],"names":[],"mappings":"AAeA,OAAO,KAAK,MAAM,OAAO,CAAC;AAQ1B,eAAO,MAAM,iBAAiB,yBAsB7B,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
"use client";import{jsx as _jsx,jsxs as _jsxs}from"react/jsx-runtime";import{Button}from"@vitnode/core/components/ui/button";import{Dialog,DialogContent,DialogDescription,DialogHeader,DialogTitle,DialogTrigger}from"@vitnode/core/components/ui/dialog";import{Loader}from"@vitnode/core/components/ui/loader";import{PlusIcon}from"lucide-react";import{useTranslations}from"next-intl";import dynamic from"next/dynamic";import React from"react";const CreateEditActionPostsAdmin=dynamic(async()=>import("./create-edit/create-edit.js").then(module=>({default:module.CreateEditActionPostsAdmin})));export const ActionsPostsAdmin=()=>{const t=useTranslations("@vitnode/blog.admin.posts.create");return _jsxs(Dialog,{children:[_jsxs(DialogTrigger,{render:_jsx(Button,{}),children:[_jsx(PlusIcon,{}),t("title")]}),_jsxs(DialogContent,{children:[_jsxs(DialogHeader,{children:[_jsx(DialogTitle,{children:t("title")}),_jsx(DialogDescription,{children:t("desc")})]}),_jsx(React.Suspense,{fallback:_jsx(Loader,{}),children:_jsx(CreateEditActionPostsAdmin,{})})]})]})};
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
import React from "react";
|
|
2
|
-
import { z } from "zod";
|
|
3
|
-
import type { zodPostSchema } from "../../../../../api/modules/posts/routes/get.route";
|
|
4
|
-
export declare const CreateEditActionPostsAdmin: ({ data, }: {
|
|
5
|
-
data?: z.infer<typeof zodPostSchema> & {
|
|
6
|
-
id?: number;
|
|
7
|
-
};
|
|
8
|
-
}) => React.JSX.Element;
|
|
9
|
-
//# sourceMappingURL=create-edit.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"create-edit.d.ts","sourceRoot":"","sources":["../../../../../../../src/views/admin/posts/actions/create-edit/create-edit.tsx"],"names":[],"mappings":"AAcA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sCAAsC,CAAC;AAO1E,eAAO,MAAM,0BAA0B,GAAI,WAExC;IACD,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,aAAa,CAAC,GAAG;QAAE,EAAE,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;CACxD,sBAgJA,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{jsx as _jsx}from"react/jsx-runtime";import{AutoForm}from"@vitnode/core/components/form/auto-form";import{AutoFormCombobox}from"@vitnode/core/components/form/fields/combobox";import{AutoFormEditor}from"@vitnode/core/components/form/fields/editor";import{useDialog}from"@vitnode/core/components/ui/dialog";import{fetcherClient}from"@vitnode/core/lib/fetcher-client";import{getLangValue,multiLangValueSchema}from"@vitnode/core/lib/helpers/multi-lang";import{usePathname,useRouter}from"@vitnode/core/lib/navigation";import{useLocale,useTranslations}from"next-intl";import React from"react";import{toast}from"sonner";import{z}from"zod";import{categoriesModule}from"../../../../../api/modules/categories/categories.module.js";import{FriendlyUrlField,TitleField}from"./multi-lang-fields.js";import{createMutationApi,editMutationApi}from"./mutation-api.server.js";export const CreateEditActionPostsAdmin=({data})=>{const t=useTranslations("@vitnode/blog.admin.posts");const tCore=useTranslations("core.global.errors");const locale=useLocale();const{setOpen}=useDialog();const{push}=useRouter();const pathname=usePathname();const resolveCategoryTitle=translations=>getLangValue(translations,locale)||translations[0]?.value||"";const friendlyUrlTouchedRef=React.useRef(new Set(data?.friendlyUrlTranslations?.map(item=>item.languageCode)));const formSchema=z.object({title:multiLangValueSchema({minLength:3,maxLength:255}).min(1).default(data?.titleTranslations??[]),friendlyUrl:multiLangValueSchema({minLength:1,maxLength:255}).min(1).default(data?.friendlyUrlTranslations??[]),content:multiLangValueSchema().default(data?.contentTranslations??[]),categoryId:z.object({value:z.string(),label:z.string()}).refine(value=>value.value!=="",{message:tCore("field_required")}).default(data?.category?{value:data.category.id.toString(),label:resolveCategoryTitle(data.category.titleTranslations)}:{value:"",label:""})});const onSubmit=async(values,form)=>{const body={title:values.title,content:values.content,friendlyUrl:values.friendlyUrl,categoryId:parseInt(values.categoryId.value,10)};const mutation=data?.id?await editMutationApi({id:data.id,...body}):await createMutationApi(body);if(mutation?.error){if(mutation.error.includes("already exists")){form.setError("friendlyUrl",{type:"manual",message:t("create.form.friendly_url.already_exists")});return}toast.error(tCore("title"),{description:tCore("internal_server_error")});return}toast.success(t(data?"edit.success":"create.success"));setOpen?.(false);setTimeout(()=>push(pathname),300)};return _jsx(AutoForm,{fields:[{id:"title",component:props=>_jsx(TitleField,{friendlyUrlName:"friendlyUrl",friendlyUrlTouched:friendlyUrlTouchedRef,label:t("create.form.title.label"),...props})},{id:"friendlyUrl",component:props=>_jsx(FriendlyUrlField,{description:t("create.form.friendly_url.desc"),friendlyUrlTouched:friendlyUrlTouchedRef,label:t("create.form.friendly_url.label"),...props})},{id:"categoryId",component:props=>_jsx(AutoFormCombobox,{fetchData:async({search})=>{const res=await fetcherClient(categoriesModule,{path:"/",method:"get",module:"categories",args:{query:{search}}});const data=await res.json();return data.edges.map(category=>({label:resolveCategoryTitle(category.titleTranslations),value:category.id.toString()}))},id:"categoryId",label:t("create.form.category"),...props})},{id:"content",component:props=>_jsx(AutoFormEditor,{label:t("create.form.content"),multiLang:true,...props})}],formSchema:formSchema,onSubmit:onSubmit,submitButtonProps:{children:t(`${data?"edit":"create"}.submit`)}})};
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
import type { ItemAutoFormComponentProps } from "@vitnode/core/components/form/auto-form";
|
|
2
|
-
import React from "react";
|
|
3
|
-
export declare const TitleField: ({ field, label, description, friendlyUrlName, friendlyUrlTouched, }: ItemAutoFormComponentProps & {
|
|
4
|
-
friendlyUrlName: string;
|
|
5
|
-
friendlyUrlTouched: React.RefObject<Set<string>>;
|
|
6
|
-
}) => React.JSX.Element;
|
|
7
|
-
export declare const FriendlyUrlField: ({ field, label, description, friendlyUrlTouched, }: ItemAutoFormComponentProps & {
|
|
8
|
-
friendlyUrlTouched: React.RefObject<Set<string>>;
|
|
9
|
-
}) => React.JSX.Element;
|
|
10
|
-
//# sourceMappingURL=multi-lang-fields.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"multi-lang-fields.d.ts","sourceRoot":"","sources":["../../../../../../../src/views/admin/posts/actions/create-edit/multi-lang-fields.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,yCAAyC,CAAC;AAiB1F,OAAO,KAAK,MAAM,OAAO,CAAC;AA+C1B,eAAO,MAAM,UAAU,GAAI,qEAMxB,0BAA0B,GAAG;IAC9B,eAAe,EAAE,MAAM,CAAC;IACxB,kBAAkB,EAAE,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC;CAClD,sBA+BA,CAAC;AAEF,eAAO,MAAM,gBAAgB,GAAI,oDAK9B,0BAA0B,GAAG;IAC9B,kBAAkB,EAAE,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC;CAClD,sBAsBA,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
"use client";import{jsx as _jsx,jsxs as _jsxs,Fragment as _Fragment}from"react/jsx-runtime";import{AutoFormDesc}from"@vitnode/core/components/form/common/desc";import{AutoFormLabel}from"@vitnode/core/components/form/common/label";import{MultiLangSelect,useMultiLangField}from"@vitnode/core/components/form/fields/multi-lang";import{FormControl,FormMessage}from"@vitnode/core/components/ui/form";import{InputGroup,InputGroupAddon,InputGroupInput}from"@vitnode/core/components/ui/input-group";import{upsertLangValue}from"@vitnode/core/lib/helpers/multi-lang";import{removeSpecialCharacters}from"@vitnode/core/lib/special-characters";import React from"react";import{useFormContext}from"react-hook-form";const MultiLangInputGroup=({currentValue,languages,onChange,onBlur,onSelect,selected,...props})=>_jsx(FormControl,{children:_jsxs(InputGroup,{children:[_jsx(InputGroupInput,{maxLength:255,onBlur:onBlur,onChange:e=>onChange(e.target.value),value:currentValue,...props}),languages.length>1&&_jsx(InputGroupAddon,{align:"inline-end",children:_jsx(MultiLangSelect,{languages:languages,onSelect:onSelect,selected:selected})})]})});export const TitleField=({field,label,description,friendlyUrlName,friendlyUrlTouched})=>{const form=useFormContext();const{languages,selected,setSelected,currentValue,setValue}=useMultiLangField(field);return _jsxs(_Fragment,{children:[label&&_jsx(AutoFormLabel,{children:label}),_jsx(MultiLangInputGroup,{currentValue:currentValue,languages:languages,onBlur:field.onBlur,onChange:value=>{setValue(value);if(friendlyUrlTouched.current?.has(selected))return;const current=form.getValues(friendlyUrlName);form.setValue(friendlyUrlName,upsertLangValue(current,selected,removeSpecialCharacters(value)),{shouldValidate:true,shouldDirty:true})},onSelect:setSelected,selected:selected}),description&&_jsx(AutoFormDesc,{children:description}),_jsx(FormMessage,{})]})};export const FriendlyUrlField=({field,label,description,friendlyUrlTouched})=>{const{languages,selected,setSelected,currentValue,setValue}=useMultiLangField(field);return _jsxs(_Fragment,{children:[label&&_jsx(AutoFormLabel,{children:label}),_jsx(MultiLangInputGroup,{currentValue:currentValue,languages:languages,onBlur:field.onBlur,onChange:value=>{friendlyUrlTouched.current?.add(selected);setValue(value)},onSelect:setSelected,selected:selected}),description&&_jsx(AutoFormDesc,{children:description}),_jsx(FormMessage,{})]})};
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
import type { z } from "zod";
|
|
2
|
-
import type { zodCreatePostSchema } from "../../../../../api/modules/admin/posts/routes/create.route";
|
|
3
|
-
export declare const createMutationApi: (body: z.infer<typeof zodCreatePostSchema>) => Promise<{
|
|
4
|
-
error: string;
|
|
5
|
-
} | undefined>;
|
|
6
|
-
export declare const editMutationApi: ({ id, ...body }: z.infer<typeof zodCreatePostSchema> & {
|
|
7
|
-
id: number;
|
|
8
|
-
}) => Promise<{
|
|
9
|
-
error: string;
|
|
10
|
-
} | undefined>;
|
|
11
|
-
//# sourceMappingURL=mutation-api.server.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"mutation-api.server.d.ts","sourceRoot":"","sources":["../../../../../../../src/views/admin/posts/actions/create-edit/mutation-api.server.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAK7B,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,+CAA+C,CAAC;AAIzF,eAAO,MAAM,iBAAiB,GAC5B,MAAM,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC;;cAoB1C,CAAC;AAEF,eAAO,MAAM,eAAe,GAAU,iBAGnC,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,GAAG;IAAE,EAAE,EAAE,MAAM,CAAA;CAAE;;cAsBtD,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
"use server";import{fetcher}from"@vitnode/core/lib/fetcher";import{revalidatePath}from"next/cache";import{postsAdminModule}from"../../../../../api/modules/admin/posts/posts.admin.module.js";export const createMutationApi=async body=>{const res=await fetcher(postsAdminModule,{prefixPath:"/admin",method:"post",module:"posts",path:"/",args:{body}});if(res.status!==201){return{error:await res.text()}}revalidatePath("/[locale]/admin/(auth)/(plugins)/(vitnode-blog)/blog/posts","page")};export const editMutationApi=async({id,...body})=>{const res=await fetcher(postsAdminModule,{prefixPath:"/admin",method:"put",module:"posts",path:"/{id}",args:{params:{id},body}});if(res.status!==200){return{error:await res.text()}}revalidatePath("/[locale]/admin/(auth)/(plugins)/(vitnode-blog)/blog/posts","page")};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"delete-action.d.ts","sourceRoot":"","sources":["../../../../../../../../src/views/admin/posts/table/actions/delete/delete-action.tsx"],"names":[],"mappings":"AAmBA,eAAO,MAAM,YAAY,GAAI,eAAe;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,uCAmDxE,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
"use client";import{jsx as _jsx,jsxs as _jsxs}from"react/jsx-runtime";import{ConfirmActionAlertDialog}from"@vitnode/core/components/confirm-action/confirm-action-alert-dialog";import{useAdminStaffPermission}from"@vitnode/core/components/staff-permission/provider";import{Button}from"@vitnode/core/components/ui/button";import{Tooltip,TooltipContent,TooltipProvider,TooltipTrigger}from"@vitnode/core/components/ui/tooltip";import{Trash2Icon}from"lucide-react";import{useTranslations}from"next-intl";import{toast}from"sonner";import{CONFIG_PLUGIN}from"../../../../../../const.js";import{mutationApi}from"./mutation-api.server.js";export const DeleteAction=({title,id})=>{const t=useTranslations("@vitnode/blog.admin.posts.delete");const tGlobal=useTranslations("core.global");const canDelete=useAdminStaffPermission({plugin:CONFIG_PLUGIN.pluginId,module:"posts",permission:"can_delete"});if(!canDelete)return null;return _jsx(TooltipProvider,{children:_jsxs(Tooltip,{children:[_jsx(ConfirmActionAlertDialog,{description:t.rich("desc",{title:()=>_jsx("span",{className:"text-foreground font-bold",children:title})}),onSubmit:async({onClose})=>{const mutation=await mutationApi(id);if(mutation?.error){toast.error(tGlobal("errors.title"),{description:tGlobal("errors.internal_server_error")});return}toast.success(t("success"),{description:title});onClose()},textSubmit:t("confirm"),title:t("title"),children:_jsx(TooltipTrigger,{render:_jsx(Button,{"aria-label":t("title"),size:"icon",variant:"destructive",children:_jsx(Trash2Icon,{className:"size-4"})})})}),_jsx(TooltipContent,{children:t("title")})]})})};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"mutation-api.server.d.ts","sourceRoot":"","sources":["../../../../../../../../src/views/admin/posts/table/actions/delete/mutation-api.server.ts"],"names":[],"mappings":"AAOA,eAAO,MAAM,WAAW,GAAU,IAAI,MAAM;;cAqB3C,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
"use server";import{fetcher}from"@vitnode/core/lib/fetcher";import{revalidatePath}from"next/cache";import{postsAdminModule}from"../../../../../../api/modules/admin/posts/posts.admin.module.js";export const mutationApi=async id=>{const res=await fetcher(postsAdminModule,{prefixPath:"/admin",method:"delete",path:"/{id}",module:"posts",args:{params:{id}}});if(!res.ok){return{error:await res.text()}}revalidatePath("/[locale]/admin/(auth)/(plugins)/(vitnode-blog)/blog/posts","page")};
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
import React from "react";
|
|
2
|
-
declare const CreateEditActionPostsAdmin: React.ComponentType<{
|
|
3
|
-
data?: import("zod").infer<typeof import("../../../../../api/modules/posts/routes/get.route").zodPostSchema> & {
|
|
4
|
-
id?: number;
|
|
5
|
-
};
|
|
6
|
-
}>;
|
|
7
|
-
export declare const EditAction: (props: Required<React.ComponentProps<typeof CreateEditActionPostsAdmin>>) => React.JSX.Element | null;
|
|
8
|
-
export {};
|
|
9
|
-
//# sourceMappingURL=edit-action.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"edit-action.d.ts","sourceRoot":"","sources":["../../../../../../../src/views/admin/posts/table/actions/edit-action.tsx"],"names":[],"mappings":"AAuBA,OAAO,KAAK,MAAM,OAAO,CAAC;AAI1B,QAAA,MAAM,0BAA0B;;UASG,CAAC;;EALnC,CAAC;AAEF,eAAO,MAAM,UAAU,GACrB,OAAO,QAAQ,CAAC,KAAK,CAAC,cAAc,CAAC,OAAO,0BAA0B,CAAC,CAAC,6BA8CzE,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
"use client";import{jsx as _jsx,jsxs as _jsxs}from"react/jsx-runtime";import{useAdminStaffPermission}from"@vitnode/core/components/staff-permission/provider";import{Button}from"@vitnode/core/components/ui/button";import{Dialog,DialogContent,DialogDescription,DialogHeader,DialogTitle,DialogTrigger}from"@vitnode/core/components/ui/dialog";import{Loader}from"@vitnode/core/components/ui/loader";import{Tooltip,TooltipContent,TooltipProvider,TooltipTrigger}from"@vitnode/core/components/ui/tooltip";import{getLangValue}from"@vitnode/core/lib/helpers/multi-lang";import{PencilIcon}from"lucide-react";import{useLocale,useTranslations}from"next-intl";import dynamic from"next/dynamic";import React from"react";import{CONFIG_PLUGIN}from"../../../../../const.js";const CreateEditActionPostsAdmin=dynamic(async()=>import("../../actions/create-edit/create-edit.js").then(mod=>({default:mod.CreateEditActionPostsAdmin})));export const EditAction=props=>{const t=useTranslations("@vitnode/blog.admin.posts.edit");const locale=useLocale();const canEdit=useAdminStaffPermission({plugin:CONFIG_PLUGIN.pluginId,module:"posts",permission:"can_edit"});if(!canEdit)return null;return _jsxs(Dialog,{children:[_jsx(TooltipProvider,{children:_jsxs(Tooltip,{children:[_jsx(TooltipTrigger,{render:_jsx(DialogTrigger,{render:_jsx(Button,{"aria-label":t("title"),size:"icon",variant:"ghost"}),children:_jsx(PencilIcon,{})})}),_jsx(TooltipContent,{children:t("title")})]})}),_jsxs(DialogContent,{children:[_jsxs(DialogHeader,{children:[_jsx(DialogTitle,{children:t("title")}),_jsx(DialogDescription,{children:getLangValue(props.data.titleTranslations,locale)||props.data.titleTranslations[0]?.value})]}),_jsx(React.Suspense,{fallback:_jsx(Loader,{}),children:_jsx(CreateEditActionPostsAdmin,{...props})})]})]})};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"posts-admin-view.d.ts","sourceRoot":"","sources":["../../../../../../src/views/admin/posts/table/posts-admin-view.tsx"],"names":[],"mappings":"AAYA,eAAO,MAAM,cAAc,GAAU,mBAElC;IACD,YAAY,EAAE,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,SAAS,CAAC,CAAC,CAAC;CACtE,yCAqFA,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{jsx as _jsx,jsxs as _jsxs,Fragment as _Fragment}from"react/jsx-runtime";import{Avatar}from"@vitnode/core/components/avatar";import{DateFormat}from"@vitnode/core/components/date-format";import{DataTable}from"@vitnode/core/components/table/data-table";import{fetcher}from"@vitnode/core/lib/fetcher";import{getLangValue}from"@vitnode/core/lib/helpers/multi-lang";import{getLocale,getTranslations}from"next-intl/server";import{postsModule}from"../../../../api/modules/posts/posts.module.js";import{DeleteAction}from"./actions/delete/delete-action.js";import{EditAction}from"./actions/edit-action.js";export const PostsAdminView=async({searchParams})=>{const t=await getTranslations("@vitnode/blog.admin.posts.table");const locale=await getLocale();const query=await searchParams;const res=await fetcher(postsModule,{path:"/",method:"get",module:"posts",args:{query},withPagination:true,options:{cache:"force-cache"}});const data=await res.json();return _jsx(DataTable,{columns:[{accessorKey:"title",header:t("title")},{accessorKey:"category",header:t("category"),className:"w-48",cell:({row})=>getLangValue(row.category.titleTranslations,locale)||row.category.titleTranslations[0]?.value||""},{accessorKey:"author",header:t("author"),className:"w-48",cell:({row})=>row.author?_jsxs("div",{className:"flex items-center gap-2",children:[_jsx(Avatar,{size:24,user:row.author}),_jsx("span",{children:row.author.name})]}):_jsx("span",{className:"text-muted-foreground",children:"—"})},{accessorKey:"updatedAt",header:t("updated_at"),className:"w-48",cell:({row})=>_jsx(DateFormat,{date:row.updatedAt})},{id:"actions",header:"",align:"right",className:"w-10",cell:({row})=>_jsxs(_Fragment,{children:[_jsx(EditAction,{data:row}),_jsx(DeleteAction,{...row})]})}],edges:data.edges.map(edge=>({...edge,title:getLangValue(edge.titleTranslations,locale)||edge.titleTranslations[0]?.value||""})),id:"posts-table",order:{columns:["createdAt","updatedAt"],defaultOrder:{column:"createdAt",order:"desc"}},pageInfo:data.pageInfo})};
|
|
@@ -1,64 +0,0 @@
|
|
|
1
|
-
import type { Metadata } from "next";
|
|
2
|
-
|
|
3
|
-
import { I18nProvider } from "@vitnode/core/components/i18n-provider";
|
|
4
|
-
import { DataTableSkeleton } from "@vitnode/core/components/table/data-table";
|
|
5
|
-
import { HeaderContent } from "@vitnode/core/components/ui/header-content";
|
|
6
|
-
import { checkAdminPermissionApi } from "@vitnode/core/lib/api/get-session-admin-api";
|
|
7
|
-
import { getTranslations } from "next-intl/server";
|
|
8
|
-
import dynamic from "next/dynamic";
|
|
9
|
-
import { notFound } from "next/navigation";
|
|
10
|
-
import React from "react";
|
|
11
|
-
|
|
12
|
-
import { CONFIG_PLUGIN } from "@/const";
|
|
13
|
-
import { ActionsCategoriesAdmin } from "@/views/admin/categories/actions/actions";
|
|
14
|
-
|
|
15
|
-
const CategoriesAdminView = dynamic(async () =>
|
|
16
|
-
import("@/views/admin/categories/table/categories-admin-view").then(mod => ({
|
|
17
|
-
default: mod.CategoriesAdminView,
|
|
18
|
-
})),
|
|
19
|
-
);
|
|
20
|
-
|
|
21
|
-
export const generateMetadata = async (): Promise<Metadata> => {
|
|
22
|
-
const t = await getTranslations("@vitnode/blog.admin.nav");
|
|
23
|
-
|
|
24
|
-
return {
|
|
25
|
-
title: t("categories"),
|
|
26
|
-
};
|
|
27
|
-
};
|
|
28
|
-
|
|
29
|
-
export default async function CategoriesPage(
|
|
30
|
-
params: React.ComponentProps<typeof CategoriesAdminView>,
|
|
31
|
-
) {
|
|
32
|
-
const [t, tNav, canView, canCreate] = await Promise.all([
|
|
33
|
-
getTranslations("@vitnode/blog.admin.categories"),
|
|
34
|
-
getTranslations("@vitnode/blog.admin.nav"),
|
|
35
|
-
checkAdminPermissionApi({
|
|
36
|
-
plugin: CONFIG_PLUGIN.pluginId,
|
|
37
|
-
module: "categories",
|
|
38
|
-
permission: "can_view",
|
|
39
|
-
}),
|
|
40
|
-
checkAdminPermissionApi({
|
|
41
|
-
plugin: CONFIG_PLUGIN.pluginId,
|
|
42
|
-
module: "categories",
|
|
43
|
-
permission: "can_create",
|
|
44
|
-
}),
|
|
45
|
-
]);
|
|
46
|
-
|
|
47
|
-
if (!canView) {
|
|
48
|
-
notFound();
|
|
49
|
-
}
|
|
50
|
-
|
|
51
|
-
return (
|
|
52
|
-
<I18nProvider namespaces={["@vitnode/blog.admin.categories"]}>
|
|
53
|
-
<div className="p-4">
|
|
54
|
-
<HeaderContent desc={t("desc")} h1={tNav("categories")}>
|
|
55
|
-
{canCreate && <ActionsCategoriesAdmin />}
|
|
56
|
-
</HeaderContent>
|
|
57
|
-
|
|
58
|
-
<React.Suspense fallback={<DataTableSkeleton columns={4} />}>
|
|
59
|
-
<CategoriesAdminView {...params} />
|
|
60
|
-
</React.Suspense>
|
|
61
|
-
</div>
|
|
62
|
-
</I18nProvider>
|
|
63
|
-
);
|
|
64
|
-
}
|
|
@@ -1,64 +0,0 @@
|
|
|
1
|
-
import type { Metadata } from "next";
|
|
2
|
-
|
|
3
|
-
import { I18nProvider } from "@vitnode/core/components/i18n-provider";
|
|
4
|
-
import { DataTableSkeleton } from "@vitnode/core/components/table/data-table";
|
|
5
|
-
import { HeaderContent } from "@vitnode/core/components/ui/header-content";
|
|
6
|
-
import { checkAdminPermissionApi } from "@vitnode/core/lib/api/get-session-admin-api";
|
|
7
|
-
import { getTranslations } from "next-intl/server";
|
|
8
|
-
import dynamic from "next/dynamic";
|
|
9
|
-
import { notFound } from "next/navigation";
|
|
10
|
-
import React from "react";
|
|
11
|
-
|
|
12
|
-
import { CONFIG_PLUGIN } from "@/const";
|
|
13
|
-
import { ActionsPostsAdmin } from "@/views/admin/posts/actions/actions";
|
|
14
|
-
|
|
15
|
-
const PostsAdminView = dynamic(async () =>
|
|
16
|
-
import("@/views/admin/posts/table/posts-admin-view").then(mod => ({
|
|
17
|
-
default: mod.PostsAdminView,
|
|
18
|
-
})),
|
|
19
|
-
);
|
|
20
|
-
|
|
21
|
-
export const generateMetadata = async (): Promise<Metadata> => {
|
|
22
|
-
const t = await getTranslations("@vitnode/blog.admin.nav");
|
|
23
|
-
|
|
24
|
-
return {
|
|
25
|
-
title: t("posts"),
|
|
26
|
-
};
|
|
27
|
-
};
|
|
28
|
-
|
|
29
|
-
export default async function PostsPage(
|
|
30
|
-
params: React.ComponentProps<typeof PostsAdminView>,
|
|
31
|
-
) {
|
|
32
|
-
const [t, tNav, canView, canCreate] = await Promise.all([
|
|
33
|
-
getTranslations("@vitnode/blog.admin.posts"),
|
|
34
|
-
getTranslations("@vitnode/blog.admin.nav"),
|
|
35
|
-
checkAdminPermissionApi({
|
|
36
|
-
plugin: CONFIG_PLUGIN.pluginId,
|
|
37
|
-
module: "posts",
|
|
38
|
-
permission: "can_view",
|
|
39
|
-
}),
|
|
40
|
-
checkAdminPermissionApi({
|
|
41
|
-
plugin: CONFIG_PLUGIN.pluginId,
|
|
42
|
-
module: "posts",
|
|
43
|
-
permission: "can_create",
|
|
44
|
-
}),
|
|
45
|
-
]);
|
|
46
|
-
|
|
47
|
-
if (!canView) {
|
|
48
|
-
notFound();
|
|
49
|
-
}
|
|
50
|
-
|
|
51
|
-
return (
|
|
52
|
-
<I18nProvider namespaces={["@vitnode/blog.admin.posts"]}>
|
|
53
|
-
<div className="p-4">
|
|
54
|
-
<HeaderContent desc={t("desc")} h1={tNav("posts")}>
|
|
55
|
-
{canCreate && <ActionsPostsAdmin />}
|
|
56
|
-
</HeaderContent>
|
|
57
|
-
|
|
58
|
-
<React.Suspense fallback={<DataTableSkeleton columns={5} />}>
|
|
59
|
-
<PostsAdminView {...params} />
|
|
60
|
-
</React.Suspense>
|
|
61
|
-
</div>
|
|
62
|
-
</I18nProvider>
|
|
63
|
-
);
|
|
64
|
-
}
|