generated from polymech/site-template
223 lines
5.0 KiB
TypeScript
223 lines
5.0 KiB
TypeScript
// Generated by ts-to-zod
|
|
import { z } from "zod";
|
|
|
|
export const footerLeftSchema = z.object({
|
|
href: z.string(),
|
|
text: z.string()
|
|
});
|
|
|
|
export const settingsSchema = z.object({
|
|
search: z.boolean(),
|
|
account: z.boolean(),
|
|
sticky_header: z.boolean(),
|
|
theme_switcher: z.boolean(),
|
|
default_theme: z.string()
|
|
});
|
|
|
|
export const paramsSchema = z.object({
|
|
contact_form_action: z.string(),
|
|
copyright: z.string()
|
|
});
|
|
|
|
export const navigationSchema = z.object({
|
|
top: z.array(footerLeftSchema)
|
|
});
|
|
|
|
export const navigationButtonSchema = z.object({
|
|
enable: z.boolean(),
|
|
label: z.string(),
|
|
link: z.string()
|
|
});
|
|
|
|
export const ecommerceSchema = z.object({
|
|
brand: z.string(),
|
|
currencySymbol: z.string(),
|
|
currencyCode: z.string()
|
|
});
|
|
|
|
export const metadataSchema = z.object({
|
|
country: z.string(),
|
|
city: z.string(),
|
|
author: z.string(),
|
|
author_bio: z.string(),
|
|
author_url: z.string(),
|
|
image: z.string(),
|
|
description: z.string(),
|
|
keywords: z.string()
|
|
});
|
|
|
|
export const coreSchema = z.object({
|
|
logging_namespace: z.string(),
|
|
translate_content: z.boolean(),
|
|
languages: z.array(z.string()),
|
|
languages_prod: z.array(z.string()),
|
|
rtl_languages: z.array(z.string()),
|
|
osr_root: z.string()
|
|
});
|
|
|
|
export const devSchema = z.object({
|
|
file_server: z.string()
|
|
});
|
|
|
|
export const i18NSchema = z.object({
|
|
store: z.string(),
|
|
cache: z.boolean(),
|
|
source_language: z.string(),
|
|
asset_path: z.string()
|
|
});
|
|
|
|
export const productsSchema = z.object({
|
|
root: z.string(),
|
|
howto_migration: z.string(),
|
|
glob: z.string(),
|
|
enabled: z.string()
|
|
});
|
|
|
|
export const retailSchema = z.object({
|
|
library_branch: z.string(),
|
|
projects_branch: z.string()
|
|
});
|
|
|
|
export const rssSchema = z.object({
|
|
title: z.string(),
|
|
description: z.string()
|
|
});
|
|
|
|
export const osrlSchema = z.object({
|
|
env: z.string(),
|
|
env_dev: z.string(),
|
|
module_name: z.string(),
|
|
lang_flavor: z.string(),
|
|
product_profile: z.string()
|
|
});
|
|
|
|
export const defaultsSchema = z.object({
|
|
image_url: z.string(),
|
|
license: z.string(),
|
|
contact: z.string()
|
|
});
|
|
|
|
export const cadSchema = z.object({
|
|
cache: z.boolean(),
|
|
export_configurations: z.boolean(),
|
|
export_sub_components: z.boolean(),
|
|
renderer: z.string(),
|
|
renderer_view: z.string(),
|
|
renderer_quality: z.number(),
|
|
extensions: z.array(z.string()),
|
|
model_ext: z.string(),
|
|
default_configuration: z.string(),
|
|
main_match: z.string(),
|
|
cam_main_match: z.string()
|
|
});
|
|
|
|
export const assetsSchema = z.object({
|
|
cad_url: z.string(),
|
|
url: z.string(),
|
|
item_url_r: z.string(),
|
|
item_url: z.string()
|
|
});
|
|
|
|
export const gallerySchema = z.object({
|
|
show_title: z.boolean(),
|
|
show_description: z.boolean(),
|
|
sizes_thumb: z.string(),
|
|
sizes_large: z.string(),
|
|
sizes_regular: z.string()
|
|
});
|
|
|
|
export const fastSchema = z.object({
|
|
sizes_medium: z.string(),
|
|
sizes_thumbs: z.string(),
|
|
sizes_large: z.string()
|
|
});
|
|
|
|
export const blogSchema = z.object({
|
|
store: z.string()
|
|
});
|
|
|
|
export const collectionsSchema = z.object({
|
|
hero_slider: z.string(),
|
|
featured_products: z.string()
|
|
});
|
|
|
|
export const imageSchema = z.object({
|
|
default: z.string(),
|
|
error: z.string(),
|
|
alt: z.string()
|
|
});
|
|
|
|
export const siteSchema = z.object({
|
|
title: z.string(),
|
|
base_url: z.string(),
|
|
description: z.string(),
|
|
base_path: z.string(),
|
|
trailing_slash: z.boolean(),
|
|
favicon: z.string(),
|
|
logo: z.string(),
|
|
logo_darkmode: z.string(),
|
|
logo_width: z.string(),
|
|
logo_height: z.string(),
|
|
logo_text: z.string(),
|
|
image: imageSchema
|
|
});
|
|
|
|
export const shopifySchema = z.object({
|
|
currencySymbol: z.string(),
|
|
currencyCode: z.string(),
|
|
collections: collectionsSchema
|
|
});
|
|
|
|
export const imageSettingsSchema = z.object({
|
|
gallery: gallerySchema,
|
|
lightbox: gallerySchema
|
|
});
|
|
|
|
export const presetsSchema = z.object({
|
|
slow: fastSchema,
|
|
medium: fastSchema,
|
|
fast: fastSchema
|
|
});
|
|
|
|
export const homeSchema = z.object({
|
|
hero: z.string(),
|
|
_blog: blogSchema
|
|
});
|
|
|
|
export const pagesSchema = z.object({
|
|
home: homeSchema
|
|
});
|
|
|
|
export const optimizationSchema = z.object({
|
|
image_settings: imageSettingsSchema,
|
|
presets: presetsSchema
|
|
});
|
|
|
|
export const appConfigSchema = z.object({
|
|
site: siteSchema,
|
|
footer_left: z.array(footerLeftSchema),
|
|
footer_right: z.array(z.any()),
|
|
settings: settingsSchema,
|
|
params: paramsSchema,
|
|
navigation: navigationSchema,
|
|
navigation_button: navigationButtonSchema,
|
|
ecommerce: ecommerceSchema,
|
|
metadata: metadataSchema,
|
|
shopify: shopifySchema,
|
|
pages: pagesSchema,
|
|
core: coreSchema,
|
|
dev: devSchema,
|
|
i18n: i18NSchema,
|
|
products: productsSchema,
|
|
retail: retailSchema,
|
|
rss: rssSchema,
|
|
osrl: osrlSchema,
|
|
features: z.record(z.string(), z.boolean()),
|
|
defaults: defaultsSchema,
|
|
cad: cadSchema,
|
|
assets: assetsSchema,
|
|
optimization: optimizationSchema
|
|
});
|
|
|
|
export type AppConfig = z.infer<typeof appConfigSchema>;
|