site-library/src/app/config.schema.ts
2025-12-27 19:36:03 +01:00

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>;