Files

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