137 lines
3.9 KiB
TypeScript
137 lines
3.9 KiB
TypeScript
import { z } from "zod";
|
|
export declare const ROLES: readonly ["ADMIN", "EDITOR"];
|
|
export type Role = (typeof ROLES)[number];
|
|
export declare const ROLE_LABELS: Record<Role, string>;
|
|
/** Normalize Iranian mobile to `09XXXXXXXXX` (Latin digits). */
|
|
export declare function normalizeIrMobile(raw: string): string;
|
|
export declare const irMobileSchema: z.ZodPipe<z.ZodPipe<z.ZodString, z.ZodTransform<string, string>>, z.ZodString>;
|
|
export declare const loginSchema: z.ZodObject<{
|
|
phone: z.ZodPipe<z.ZodPipe<z.ZodString, z.ZodTransform<string, string>>, z.ZodString>;
|
|
password: z.ZodString;
|
|
}, z.core.$strip>;
|
|
export type LoginInput = z.infer<typeof loginSchema>;
|
|
export declare const changePasswordSchema: z.ZodObject<{
|
|
currentPassword: z.ZodString;
|
|
newPassword: z.ZodString;
|
|
}, z.core.$strip>;
|
|
export type ChangePasswordInput = z.infer<typeof changePasswordSchema>;
|
|
export declare const userCreateSchema: z.ZodObject<{
|
|
phone: z.ZodPipe<z.ZodPipe<z.ZodString, z.ZodTransform<string, string>>, z.ZodString>;
|
|
name: z.ZodString;
|
|
role: z.ZodEnum<{
|
|
ADMIN: "ADMIN";
|
|
EDITOR: "EDITOR";
|
|
}>;
|
|
password: z.ZodString;
|
|
}, z.core.$strip>;
|
|
export type UserCreateInput = z.infer<typeof userCreateSchema>;
|
|
export declare const userUpdateSchema: z.ZodObject<{
|
|
name: z.ZodString;
|
|
role: z.ZodEnum<{
|
|
ADMIN: "ADMIN";
|
|
EDITOR: "EDITOR";
|
|
}>;
|
|
isActive: z.ZodBoolean;
|
|
password: z.ZodOptional<z.ZodString>;
|
|
}, z.core.$strip>;
|
|
export type UserUpdateInput = z.infer<typeof userUpdateSchema>;
|
|
export interface AdminUserDto {
|
|
id: number;
|
|
phone: string;
|
|
name: string;
|
|
role: Role;
|
|
isActive: boolean;
|
|
lastLoginAt: string | null;
|
|
createdAt: string;
|
|
}
|
|
export interface AuthResponse {
|
|
accessToken: string;
|
|
user: AdminUserDto;
|
|
}
|
|
export declare const MESSAGE_STATUSES: readonly ["NEW", "READ", "ARCHIVED"];
|
|
export type MessageStatus = (typeof MESSAGE_STATUSES)[number];
|
|
export declare const MESSAGE_STATUS_LABELS: Record<MessageStatus, string>;
|
|
export declare const contactInputSchema: z.ZodObject<{
|
|
name: z.ZodString;
|
|
org: z.ZodString;
|
|
phone: z.ZodString;
|
|
message: z.ZodDefault<z.ZodString>;
|
|
website: z.ZodOptional<z.ZodString>;
|
|
}, z.core.$strip>;
|
|
export type ContactInput = z.infer<typeof contactInputSchema>;
|
|
export declare const messageUpdateSchema: z.ZodObject<{
|
|
status: z.ZodEnum<{
|
|
NEW: "NEW";
|
|
READ: "READ";
|
|
ARCHIVED: "ARCHIVED";
|
|
}>;
|
|
}, z.core.$strip>;
|
|
export interface ContactMessageDto {
|
|
id: number;
|
|
name: string;
|
|
org: string;
|
|
phone: string;
|
|
message: string;
|
|
status: MessageStatus;
|
|
createdAt: string;
|
|
}
|
|
export interface MediaDto {
|
|
id: number;
|
|
url: string;
|
|
alt: string;
|
|
mime: string;
|
|
size: number;
|
|
width: number | null;
|
|
height: number | null;
|
|
originalName: string;
|
|
createdAt: string;
|
|
}
|
|
export declare const mediaUpdateSchema: z.ZodObject<{
|
|
alt: z.ZodDefault<z.ZodString>;
|
|
}, z.core.$strip>;
|
|
export interface Paginated<T> {
|
|
items: T[];
|
|
total: number;
|
|
page: number;
|
|
pageSize: number;
|
|
}
|
|
export interface DashboardCategoryStat {
|
|
id: number;
|
|
name: string;
|
|
count: number;
|
|
}
|
|
export interface DashboardTrendDay {
|
|
date: string;
|
|
dayName: string;
|
|
messages: number;
|
|
}
|
|
export interface DashboardDto {
|
|
categories: number;
|
|
products: number;
|
|
draftProducts: number;
|
|
newMessages: number;
|
|
media: number;
|
|
recentMessages: ContactMessageDto[];
|
|
recentActivity: {
|
|
id: number;
|
|
action: string;
|
|
entity: string;
|
|
summary: string;
|
|
user: string | null;
|
|
createdAt: string;
|
|
}[];
|
|
categoryStats: DashboardCategoryStat[];
|
|
messageBreakdown: {
|
|
new: number;
|
|
read: number;
|
|
archived: number;
|
|
total: number;
|
|
};
|
|
sectionsSummary: {
|
|
total: number;
|
|
visible: number;
|
|
hidden: number;
|
|
};
|
|
trend: DashboardTrendDay[];
|
|
}
|
|
//# sourceMappingURL=admin.d.ts.map
|