154 lines
5.1 KiB
TypeScript
154 lines
5.1 KiB
TypeScript
import { z } from "zod";
|
|
export declare const productAttributeSchema: z.ZodObject<{
|
|
name: z.ZodString;
|
|
value: z.ZodString;
|
|
}, z.core.$strip>;
|
|
export type ProductAttribute = z.infer<typeof productAttributeSchema>;
|
|
export declare const productGroupInputSchema: z.ZodObject<{
|
|
id: z.ZodOptional<z.ZodCoercedNumber<unknown>>;
|
|
slug: z.ZodString;
|
|
name: z.ZodString;
|
|
desc: z.ZodDefault<z.ZodString>;
|
|
}, z.core.$strip>;
|
|
export type ProductGroupInput = z.infer<typeof productGroupInputSchema>;
|
|
export declare const categoryInputSchema: z.ZodObject<{
|
|
slug: z.ZodString;
|
|
code: z.ZodString;
|
|
name: z.ZodString;
|
|
nameEn: z.ZodDefault<z.ZodString>;
|
|
shortDesc: z.ZodDefault<z.ZodString>;
|
|
fullDesc: z.ZodDefault<z.ZodString>;
|
|
icon: z.ZodDefault<z.ZodString>;
|
|
coverImageId: z.ZodDefault<z.ZodNullable<z.ZodCoercedNumber<unknown>>>;
|
|
isPublished: z.ZodDefault<z.ZodBoolean>;
|
|
seoTitle: z.ZodDefault<z.ZodString>;
|
|
seoDescription: z.ZodDefault<z.ZodString>;
|
|
groups: z.ZodDefault<z.ZodArray<z.ZodObject<{
|
|
id: z.ZodOptional<z.ZodCoercedNumber<unknown>>;
|
|
slug: z.ZodString;
|
|
name: z.ZodString;
|
|
desc: z.ZodDefault<z.ZodString>;
|
|
}, z.core.$strip>>>;
|
|
}, z.core.$strip>;
|
|
export type CategoryInput = z.infer<typeof categoryInputSchema>;
|
|
export declare const productInputSchema: z.ZodObject<{
|
|
categoryId: z.ZodCoercedNumber<unknown>;
|
|
groupId: z.ZodDefault<z.ZodNullable<z.ZodCoercedNumber<unknown>>>;
|
|
code: z.ZodString;
|
|
slug: z.ZodString;
|
|
name: z.ZodString;
|
|
nameEn: z.ZodDefault<z.ZodString>;
|
|
desc: z.ZodDefault<z.ZodString>;
|
|
specs: z.ZodDefault<z.ZodArray<z.ZodString>>;
|
|
variants: z.ZodDefault<z.ZodArray<z.ZodString>>;
|
|
details: z.ZodDefault<z.ZodString>;
|
|
brand: z.ZodDefault<z.ZodString>;
|
|
origin: z.ZodDefault<z.ZodString>;
|
|
sizes: z.ZodDefault<z.ZodArray<z.ZodString>>;
|
|
standards: z.ZodDefault<z.ZodArray<z.ZodString>>;
|
|
features: z.ZodDefault<z.ZodArray<z.ZodString>>;
|
|
applications: z.ZodDefault<z.ZodArray<z.ZodString>>;
|
|
attributes: z.ZodDefault<z.ZodArray<z.ZodObject<{
|
|
name: z.ZodString;
|
|
value: z.ZodString;
|
|
}, z.core.$strip>>>;
|
|
packaging: z.ZodDefault<z.ZodString>;
|
|
minOrder: z.ZodDefault<z.ZodString>;
|
|
seoTitle: z.ZodDefault<z.ZodString>;
|
|
seoDescription: z.ZodDefault<z.ZodString>;
|
|
imageId: z.ZodDefault<z.ZodNullable<z.ZodCoercedNumber<unknown>>>;
|
|
galleryIds: z.ZodDefault<z.ZodArray<z.ZodCoercedNumber<unknown>>>;
|
|
isPublished: z.ZodDefault<z.ZodBoolean>;
|
|
}, z.core.$strip>;
|
|
export type ProductInput = z.infer<typeof productInputSchema>;
|
|
export declare const reorderSchema: z.ZodObject<{
|
|
ids: z.ZodArray<z.ZodCoercedNumber<unknown>>;
|
|
}, z.core.$strip>;
|
|
export type ReorderInput = z.infer<typeof reorderSchema>;
|
|
export declare const productListQuerySchema: z.ZodObject<{
|
|
categoryId: z.ZodOptional<z.ZodCoercedNumber<unknown>>;
|
|
groupId: z.ZodOptional<z.ZodCoercedNumber<unknown>>;
|
|
q: z.ZodOptional<z.ZodString>;
|
|
status: z.ZodOptional<z.ZodEnum<{
|
|
published: "published";
|
|
draft: "draft";
|
|
}>>;
|
|
page: z.ZodDefault<z.ZodCoercedNumber<unknown>>;
|
|
pageSize: z.ZodDefault<z.ZodCoercedNumber<unknown>>;
|
|
}, z.core.$strip>;
|
|
export type ProductListQuery = z.infer<typeof productListQuerySchema>;
|
|
export interface PublicProductGroup {
|
|
slug: string;
|
|
name: string;
|
|
desc: string;
|
|
}
|
|
export interface PublicProduct {
|
|
code: string;
|
|
slug: string;
|
|
name: string;
|
|
nameEn: string;
|
|
desc: string;
|
|
specs: string[];
|
|
variants: string[];
|
|
/** image URL, or null when the product has no own photo */
|
|
image: string | null;
|
|
/** slug of a `PublicCategory.groups` entry */
|
|
group: string | null;
|
|
}
|
|
export interface PublicCategorySummary {
|
|
slug: string;
|
|
code: string;
|
|
name: string;
|
|
nameEn: string;
|
|
shortDesc: string;
|
|
icon: string;
|
|
coverImage: string | null;
|
|
productCount: number;
|
|
}
|
|
export interface PublicProductImage {
|
|
url: string;
|
|
alt: string;
|
|
width: number | null;
|
|
height: number | null;
|
|
}
|
|
/** Everything the product page needs (`GET /api/public/products/:slug`) */
|
|
export interface PublicProductDetail extends PublicProduct {
|
|
details: string;
|
|
brand: string;
|
|
origin: string;
|
|
sizes: string[];
|
|
standards: string[];
|
|
features: string[];
|
|
applications: string[];
|
|
attributes: ProductAttribute[];
|
|
packaging: string;
|
|
minOrder: string;
|
|
seoTitle: string;
|
|
seoDescription: string;
|
|
/** main image first, then the gallery */
|
|
images: PublicProductImage[];
|
|
groupName: string | null;
|
|
category: {
|
|
slug: string;
|
|
code: string;
|
|
name: string;
|
|
nameEn: string;
|
|
fullDesc: string;
|
|
coverImage: string | null;
|
|
};
|
|
related: PublicProduct[];
|
|
updatedAt: string;
|
|
}
|
|
/** Published product URLs for the sitemap */
|
|
export interface PublicProductRef {
|
|
slug: string;
|
|
updatedAt: string;
|
|
}
|
|
export interface PublicCategory extends PublicCategorySummary {
|
|
fullDesc: string;
|
|
seoTitle: string;
|
|
seoDescription: string;
|
|
groups: PublicProductGroup[];
|
|
products: PublicProduct[];
|
|
}
|
|
//# sourceMappingURL=catalog.d.ts.map
|