diff --git a/.gitignore b/.gitignore index 3153a64..b28f0c1 100644 --- a/.gitignore +++ b/.gitignore @@ -28,7 +28,6 @@ Thumbs.db out/ # Payload generated -src/payload-types.ts src/generated-schema.graphql # Build diff --git a/src/payload-types.ts b/src/payload-types.ts new file mode 100644 index 0000000..153ae54 --- /dev/null +++ b/src/payload-types.ts @@ -0,0 +1,2139 @@ +/* tslint:disable */ + +/** + * This file was automatically generated by Payload. + * DO NOT MODIFY IT BY HAND. Instead, modify your source Payload config, + * and re-run `payload generate:types` to regenerate this file. + */ + +/** + * Supported timezones in IANA format. + * + * This interface was referenced by `Config`'s JSON-Schema + * via the `definition` "supportedTimezones". + */ +export type SupportedTimezones = 'Europe/Kyiv' + +export interface Config { + auth: { + users: UserAuthOperations + } + blocks: {} + collections: { + users: User + media: Media + pages: Page + 'blog-posts': BlogPost + categories: Category + tags: Tag + tariffs: Tariff + leads: Lead + orders: Order + locations: Location + reviews: Review + 'birthday-packages': BirthdayPackage + redirects: Redirect + 'payload-kv': PayloadKv + 'payload-locked-documents': PayloadLockedDocument + 'payload-preferences': PayloadPreference + 'payload-migrations': PayloadMigration + } + collectionsJoins: {} + collectionsSelect: { + users: UsersSelect | UsersSelect + media: MediaSelect | MediaSelect + pages: PagesSelect | PagesSelect + 'blog-posts': BlogPostsSelect | BlogPostsSelect + categories: CategoriesSelect | CategoriesSelect + tags: TagsSelect | TagsSelect + tariffs: TariffsSelect | TariffsSelect + leads: LeadsSelect | LeadsSelect + orders: OrdersSelect | OrdersSelect + locations: LocationsSelect | LocationsSelect + reviews: ReviewsSelect | ReviewsSelect + 'birthday-packages': BirthdayPackagesSelect | BirthdayPackagesSelect + redirects: RedirectsSelect | RedirectsSelect + 'payload-kv': PayloadKvSelect | PayloadKvSelect + 'payload-locked-documents': + | PayloadLockedDocumentsSelect + | PayloadLockedDocumentsSelect + 'payload-preferences': PayloadPreferencesSelect | PayloadPreferencesSelect + 'payload-migrations': PayloadMigrationsSelect | PayloadMigrationsSelect + } + db: { + defaultIDType: number + } + fallbackLocale: null + globals: { + 'home-page': HomePage + 'checkout-page': CheckoutPage + 'thank-you-page': ThankYouPage + header: Header + footer: Footer + 'site-settings': SiteSetting + 'dyvolis-page': DyvolisPage + 'group-visits-page': GroupVisitsPage + 'birthday-page': BirthdayPage + 'tickets-page': TicketsPage + 'locations-page': LocationsPage + 'blog-index-page': BlogIndexPage + } + globalsSelect: { + 'home-page': HomePageSelect | HomePageSelect + 'checkout-page': CheckoutPageSelect | CheckoutPageSelect + 'thank-you-page': ThankYouPageSelect | ThankYouPageSelect + header: HeaderSelect | HeaderSelect + footer: FooterSelect | FooterSelect + 'site-settings': SiteSettingsSelect | SiteSettingsSelect + 'dyvolis-page': DyvolisPageSelect | DyvolisPageSelect + 'group-visits-page': GroupVisitsPageSelect | GroupVisitsPageSelect + 'birthday-page': BirthdayPageSelect | BirthdayPageSelect + 'tickets-page': TicketsPageSelect | TicketsPageSelect + 'locations-page': LocationsPageSelect | LocationsPageSelect + 'blog-index-page': BlogIndexPageSelect | BlogIndexPageSelect + } + locale: null + widgets: { + collections: CollectionsWidget + } + user: User + jobs: { + tasks: unknown + workflows: unknown + } +} +export interface UserAuthOperations { + forgotPassword: { + email: string + password: string + } + login: { + email: string + password: string + } + registerFirstUser: { + email: string + password: string + } + unlock: { + email: string + password: string + } +} +/** + * This interface was referenced by `Config`'s JSON-Schema + * via the `definition` "users". + */ +export interface User { + id: number + name: string + role: 'admin' | 'editor' + updatedAt: string + createdAt: string + email: string + resetPasswordToken?: string | null + resetPasswordExpiration?: string | null + salt?: string | null + hash?: string | null + loginAttempts?: number | null + lockUntil?: string | null + sessions?: + | { + id: string + createdAt?: string | null + expiresAt: string + }[] + | null + password?: string | null + collection: 'users' +} +/** + * This interface was referenced by `Config`'s JSON-Schema + * via the `definition` "media". + */ +export interface Media { + id: number + alt: string + updatedAt: string + createdAt: string + url?: string | null + thumbnailURL?: string | null + filename?: string | null + mimeType?: string | null + filesize?: number | null + width?: number | null + height?: number | null + focalX?: number | null + focalY?: number | null +} +/** + * This interface was referenced by `Config`'s JSON-Schema + * via the `definition` "pages". + */ +export interface Page { + id: number + title: string + slug?: string | null + status?: ('draft' | 'published') | null + layout?: + | ( + | { + title: string + subtitle?: string | null + ctaLabel?: string | null + ctaHref?: string | null + backgroundType?: ('image' | 'video') | null + backgroundImage?: (number | null) | Media + backgroundVideoUrl?: string | null + id?: string | null + blockName?: string | null + blockType: 'hero' + } + | { + title?: string | null + locations?: + | { + name?: string | null + description?: string | null + image?: (number | null) | Media + href?: string | null + ctaLabel?: string | null + id?: string | null + }[] + | null + id?: string | null + blockName?: string | null + blockType: 'locationsTeaser' + } + | { + title?: string | null + items?: + | { + icon?: string | null + title: string + description?: string | null + id?: string | null + }[] + | null + id?: string | null + blockName?: string | null + blockType: 'features' + } + | { + title?: string | null + limit?: number | null + id?: string | null + blockName?: string | null + blockType: 'newsBlock' + } + | { + title?: string | null + subtitle?: string | null + ctaLabel?: string | null + id?: string | null + blockName?: string | null + blockType: 'newsletterForm' + } + | { + title?: string | null + images?: + | { + image: number | Media + caption?: string | null + id?: string | null + }[] + | null + id?: string | null + blockName?: string | null + blockType: 'gallery' + } + | { + content: { + root: { + type: string + children: { + type: any + version: number + [k: string]: unknown + }[] + direction: ('ltr' | 'rtl') | null + format: 'left' | 'start' | 'center' | 'right' | 'end' | 'justify' | '' + indent: number + version: number + } + [k: string]: unknown + } + id?: string | null + blockName?: string | null + blockType: 'richText' + } + | { + image: number | Media + caption?: string | null + fullWidth?: boolean | null + id?: string | null + blockName?: string | null + blockType: 'imageBlock' + } + | { + videoUrl: string + caption?: string | null + autoplay?: boolean | null + id?: string | null + blockName?: string | null + blockType: 'videoBlock' + } + | { + title?: string | null + subtitle?: string | null + formSource: string + showPhone?: boolean | null + showEmail?: boolean | null + ctaLabel?: string | null + successMessage?: string | null + id?: string | null + blockName?: string | null + blockType: 'leadForm' + } + | { + title?: string | null + subtitle?: string | null + showOnlyVisible?: boolean | null + ctaLabel?: string | null + id?: string | null + blockName?: string | null + blockType: 'pricingBlock' + } + | { + title: string + subtitle?: string | null + ctaLabel: string + ctaHref: string + variant?: ('primary' | 'secondary' | 'dark') | null + id?: string | null + blockName?: string | null + blockType: 'cta' + } + )[] + | null + meta?: { + title?: string | null + description?: string | null + /** + * Maximum upload file size: 12MB. Recommended file size for images is <500KB. + */ + image?: (number | null) | Media + } + updatedAt: string + createdAt: string + _status?: ('draft' | 'published') | null +} +/** + * This interface was referenced by `Config`'s JSON-Schema + * via the `definition` "blog-posts". + */ +export interface BlogPost { + id: number + title: string + slug?: string | null + publishedAt?: string | null + hero?: (number | null) | Media + body?: { + root: { + type: string + children: { + type: any + version: number + [k: string]: unknown + }[] + direction: ('ltr' | 'rtl') | null + format: 'left' | 'start' | 'center' | 'right' | 'end' | 'justify' | '' + indent: number + version: number + } + [k: string]: unknown + } | null + excerpt?: string | null + categories?: (number | Category)[] | null + tags?: (number | Tag)[] | null + status?: ('draft' | 'published') | null + meta?: { + title?: string | null + description?: string | null + /** + * Maximum upload file size: 12MB. Recommended file size for images is <500KB. + */ + image?: (number | null) | Media + } + updatedAt: string + createdAt: string + _status?: ('draft' | 'published') | null +} +/** + * This interface was referenced by `Config`'s JSON-Schema + * via the `definition` "categories". + */ +export interface Category { + id: number + name: string + slug?: string | null + updatedAt: string + createdAt: string +} +/** + * This interface was referenced by `Config`'s JSON-Schema + * via the `definition` "tags". + */ +export interface Tag { + id: number + name: string + slug?: string | null + updatedAt: string + createdAt: string +} +/** + * This interface was referenced by `Config`'s JSON-Schema + * via the `definition` "tariffs". + */ +export interface Tariff { + id: number + /** + * Встановлюється автоматично при синхронізації з ezy API + */ + ezy_id: number + display_name?: string | null + description?: { + root: { + type: string + children: { + type: any + version: number + [k: string]: unknown + }[] + direction: ('ltr' | 'rtl') | null + format: 'left' | 'start' | 'center' | 'right' | 'end' | 'justify' | '' + indent: number + version: number + } + [k: string]: unknown + } | null + image?: (number | null) | Media + icon?: string | null + category_tag: 'dyno' | 'dyvolis' | 'maze' | 'combo' | 'family' + sort?: number | null + visible?: boolean | null + /** + * Оновлюється автоматично при синхронізації + */ + last_synced_name?: string | null + last_synced_price?: number | null + last_synced_at?: string | null + updatedAt: string + createdAt: string +} +/** + * This interface was referenced by `Config`'s JSON-Schema + * via the `definition` "leads". + */ +export interface Lead { + id: number + name: string + phone: string + email?: string | null + formSource: string + utmSource?: string | null + utmMedium?: string | null + utmCampaign?: string | null + utmContent?: string | null + utmTerm?: string | null + gclid?: string | null + status?: ('new' | 'contacted' | 'qualified' | 'closed') | null + message?: string | null + groupSize?: number | null + preferredDate?: string | null + packageSlug?: string | null + notes?: string | null + lastCallAt?: string | null + updatedAt: string + createdAt: string +} +/** + * This interface was referenced by `Config`'s JSON-Schema + * via the `definition` "orders". + */ +export interface Order { + id: number + name?: string | null + phone?: string | null + email: string + items?: + | { + tariffId: string + count: number + id?: string | null + }[] + | null + amount: number + monobankUrl: string + status?: ('redirected_to_payment' | 'paid' | 'failed' | 'cancelled') | null + ezyActivity?: string | null + updatedAt: string + createdAt: string +} +/** + * This interface was referenced by `Config`'s JSON-Schema + * via the `definition` "locations". + */ +export interface Location { + id: number + name: string + slug: string + tagline?: string | null + shortDesc?: string | null + description?: { + root: { + type: string + children: { + type: any + version: number + [k: string]: unknown + }[] + direction: ('ltr' | 'rtl') | null + format: 'left' | 'start' | 'center' | 'right' | 'end' | 'justify' | '' + indent: number + version: number + } + [k: string]: unknown + } | null + image?: (number | null) | Media + gallery?: + | { + image?: (number | null) | Media + id?: string | null + }[] + | null + /** + * Зовнішнє посилання (якщо є) + */ + href?: string | null + showInMenu?: boolean | null + showOnHome?: boolean | null + sort?: number | null + /** + * Увімкнути детальну сторінку для цієї локації + */ + showDetailPage?: boolean | null + /** + * Фоновий декор у hero-секції (еліпс, візерунок) + */ + heroBackground?: (number | null) | Media + /** + * Число у круглому бейджі, напр. "60+" + */ + heroStat?: string | null + heroStatLabel?: string | null + heroTips?: + | { + text: string + id?: string | null + }[] + | null + galleryQuote?: string | null + whyVisitTitle?: string | null + whyVisitItems?: + | { + title: string + description: string + id?: string | null + }[] + | null + /** + * Якщо порожньо — використовуються стандартні відео + */ + reviewVideos?: + | { + /** + * URL відео, напр. /videos/dyvolis/video-01.mp4 + */ + src: string + /** + * URL постеру + */ + poster?: string | null + label?: string | null + id?: string | null + }[] + | null + /** + * Напр. "щодня з 11:00 до 20:00" + */ + workingHours?: string | null + /** + * Підзаголовок під секцією "Комбо" в блоці квитків + */ + comboDescription?: string | null + meta?: { + title?: string | null + description?: string | null + /** + * Maximum upload file size: 12MB. Recommended file size for images is <500KB. + */ + image?: (number | null) | Media + } + updatedAt: string + createdAt: string +} +/** + * This interface was referenced by `Config`'s JSON-Schema + * via the `definition` "reviews". + */ +export interface Review { + id: number + name: string + initial?: string | null + avatarBg?: (number | null) | Media + ago?: string | null + rating?: number | null + text: string + source?: ('google' | 'facebook' | 'instagram' | 'manual') | null + /** + * URL відео-відгуку, напр. /videos/dyvolis/video-01.mp4 + */ + videoUrl?: string | null + /** + * URL постеру для відео + */ + videoPoster?: string | null + showOnHome?: boolean | null + sort?: number | null + updatedAt: string + createdAt: string +} +/** + * This interface was referenced by `Config`'s JSON-Schema + * via the `definition` "birthday-packages". + */ +export interface BirthdayPackage { + id: number + name: string + slug: string + price: number + currency?: string | null + priceLabel?: string | null + features?: + | { + text: string + id?: string | null + }[] + | null + featured?: boolean | null + badge?: string | null + ctaLabel?: string | null + ctaHref?: string | null + sort?: number | null + updatedAt: string + createdAt: string +} +/** + * This interface was referenced by `Config`'s JSON-Schema + * via the `definition` "redirects". + */ +export interface Redirect { + id: number + from: string + to?: { + type?: ('reference' | 'custom') | null + reference?: { + relationTo: 'pages' + value: number | Page + } | null + url?: string | null + } + type: '301' | '302' + updatedAt: string + createdAt: string +} +/** + * This interface was referenced by `Config`'s JSON-Schema + * via the `definition` "payload-kv". + */ +export interface PayloadKv { + id: number + key: string + data: + | { + [k: string]: unknown + } + | unknown[] + | string + | number + | boolean + | null +} +/** + * This interface was referenced by `Config`'s JSON-Schema + * via the `definition` "payload-locked-documents". + */ +export interface PayloadLockedDocument { + id: number + document?: + | ({ + relationTo: 'users' + value: number | User + } | null) + | ({ + relationTo: 'media' + value: number | Media + } | null) + | ({ + relationTo: 'pages' + value: number | Page + } | null) + | ({ + relationTo: 'blog-posts' + value: number | BlogPost + } | null) + | ({ + relationTo: 'categories' + value: number | Category + } | null) + | ({ + relationTo: 'tags' + value: number | Tag + } | null) + | ({ + relationTo: 'tariffs' + value: number | Tariff + } | null) + | ({ + relationTo: 'leads' + value: number | Lead + } | null) + | ({ + relationTo: 'orders' + value: number | Order + } | null) + | ({ + relationTo: 'locations' + value: number | Location + } | null) + | ({ + relationTo: 'reviews' + value: number | Review + } | null) + | ({ + relationTo: 'birthday-packages' + value: number | BirthdayPackage + } | null) + | ({ + relationTo: 'redirects' + value: number | Redirect + } | null) + globalSlug?: string | null + user: { + relationTo: 'users' + value: number | User + } + updatedAt: string + createdAt: string +} +/** + * This interface was referenced by `Config`'s JSON-Schema + * via the `definition` "payload-preferences". + */ +export interface PayloadPreference { + id: number + user: { + relationTo: 'users' + value: number | User + } + key?: string | null + value?: + | { + [k: string]: unknown + } + | unknown[] + | string + | number + | boolean + | null + updatedAt: string + createdAt: string +} +/** + * This interface was referenced by `Config`'s JSON-Schema + * via the `definition` "payload-migrations". + */ +export interface PayloadMigration { + id: number + name?: string | null + batch?: number | null + updatedAt: string + createdAt: string +} +/** + * This interface was referenced by `Config`'s JSON-Schema + * via the `definition` "users_select". + */ +export interface UsersSelect { + name?: T + role?: T + updatedAt?: T + createdAt?: T + email?: T + resetPasswordToken?: T + resetPasswordExpiration?: T + salt?: T + hash?: T + loginAttempts?: T + lockUntil?: T + sessions?: + | T + | { + id?: T + createdAt?: T + expiresAt?: T + } +} +/** + * This interface was referenced by `Config`'s JSON-Schema + * via the `definition` "media_select". + */ +export interface MediaSelect { + alt?: T + updatedAt?: T + createdAt?: T + url?: T + thumbnailURL?: T + filename?: T + mimeType?: T + filesize?: T + width?: T + height?: T + focalX?: T + focalY?: T +} +/** + * This interface was referenced by `Config`'s JSON-Schema + * via the `definition` "pages_select". + */ +export interface PagesSelect { + title?: T + slug?: T + status?: T + layout?: + | T + | { + hero?: + | T + | { + title?: T + subtitle?: T + ctaLabel?: T + ctaHref?: T + backgroundType?: T + backgroundImage?: T + backgroundVideoUrl?: T + id?: T + blockName?: T + } + locationsTeaser?: + | T + | { + title?: T + locations?: + | T + | { + name?: T + description?: T + image?: T + href?: T + ctaLabel?: T + id?: T + } + id?: T + blockName?: T + } + features?: + | T + | { + title?: T + items?: + | T + | { + icon?: T + title?: T + description?: T + id?: T + } + id?: T + blockName?: T + } + newsBlock?: + | T + | { + title?: T + limit?: T + id?: T + blockName?: T + } + newsletterForm?: + | T + | { + title?: T + subtitle?: T + ctaLabel?: T + id?: T + blockName?: T + } + gallery?: + | T + | { + title?: T + images?: + | T + | { + image?: T + caption?: T + id?: T + } + id?: T + blockName?: T + } + richText?: + | T + | { + content?: T + id?: T + blockName?: T + } + imageBlock?: + | T + | { + image?: T + caption?: T + fullWidth?: T + id?: T + blockName?: T + } + videoBlock?: + | T + | { + videoUrl?: T + caption?: T + autoplay?: T + id?: T + blockName?: T + } + leadForm?: + | T + | { + title?: T + subtitle?: T + formSource?: T + showPhone?: T + showEmail?: T + ctaLabel?: T + successMessage?: T + id?: T + blockName?: T + } + pricingBlock?: + | T + | { + title?: T + subtitle?: T + showOnlyVisible?: T + ctaLabel?: T + id?: T + blockName?: T + } + cta?: + | T + | { + title?: T + subtitle?: T + ctaLabel?: T + ctaHref?: T + variant?: T + id?: T + blockName?: T + } + } + meta?: + | T + | { + title?: T + description?: T + image?: T + } + updatedAt?: T + createdAt?: T + _status?: T +} +/** + * This interface was referenced by `Config`'s JSON-Schema + * via the `definition` "blog-posts_select". + */ +export interface BlogPostsSelect { + title?: T + slug?: T + publishedAt?: T + hero?: T + body?: T + excerpt?: T + categories?: T + tags?: T + status?: T + meta?: + | T + | { + title?: T + description?: T + image?: T + } + updatedAt?: T + createdAt?: T + _status?: T +} +/** + * This interface was referenced by `Config`'s JSON-Schema + * via the `definition` "categories_select". + */ +export interface CategoriesSelect { + name?: T + slug?: T + updatedAt?: T + createdAt?: T +} +/** + * This interface was referenced by `Config`'s JSON-Schema + * via the `definition` "tags_select". + */ +export interface TagsSelect { + name?: T + slug?: T + updatedAt?: T + createdAt?: T +} +/** + * This interface was referenced by `Config`'s JSON-Schema + * via the `definition` "tariffs_select". + */ +export interface TariffsSelect { + ezy_id?: T + display_name?: T + description?: T + image?: T + icon?: T + category_tag?: T + sort?: T + visible?: T + last_synced_name?: T + last_synced_price?: T + last_synced_at?: T + updatedAt?: T + createdAt?: T +} +/** + * This interface was referenced by `Config`'s JSON-Schema + * via the `definition` "leads_select". + */ +export interface LeadsSelect { + name?: T + phone?: T + email?: T + formSource?: T + utmSource?: T + utmMedium?: T + utmCampaign?: T + utmContent?: T + utmTerm?: T + gclid?: T + status?: T + message?: T + groupSize?: T + preferredDate?: T + packageSlug?: T + notes?: T + lastCallAt?: T + updatedAt?: T + createdAt?: T +} +/** + * This interface was referenced by `Config`'s JSON-Schema + * via the `definition` "orders_select". + */ +export interface OrdersSelect { + name?: T + phone?: T + email?: T + items?: + | T + | { + tariffId?: T + count?: T + id?: T + } + amount?: T + monobankUrl?: T + status?: T + ezyActivity?: T + updatedAt?: T + createdAt?: T +} +/** + * This interface was referenced by `Config`'s JSON-Schema + * via the `definition` "locations_select". + */ +export interface LocationsSelect { + name?: T + slug?: T + tagline?: T + shortDesc?: T + description?: T + image?: T + gallery?: + | T + | { + image?: T + id?: T + } + href?: T + showInMenu?: T + showOnHome?: T + sort?: T + showDetailPage?: T + heroBackground?: T + heroStat?: T + heroStatLabel?: T + heroTips?: + | T + | { + text?: T + id?: T + } + galleryQuote?: T + whyVisitTitle?: T + whyVisitItems?: + | T + | { + title?: T + description?: T + id?: T + } + reviewVideos?: + | T + | { + src?: T + poster?: T + label?: T + id?: T + } + workingHours?: T + comboDescription?: T + meta?: + | T + | { + title?: T + description?: T + image?: T + } + updatedAt?: T + createdAt?: T +} +/** + * This interface was referenced by `Config`'s JSON-Schema + * via the `definition` "reviews_select". + */ +export interface ReviewsSelect { + name?: T + initial?: T + avatarBg?: T + ago?: T + rating?: T + text?: T + source?: T + videoUrl?: T + videoPoster?: T + showOnHome?: T + sort?: T + updatedAt?: T + createdAt?: T +} +/** + * This interface was referenced by `Config`'s JSON-Schema + * via the `definition` "birthday-packages_select". + */ +export interface BirthdayPackagesSelect { + name?: T + slug?: T + price?: T + currency?: T + priceLabel?: T + features?: + | T + | { + text?: T + id?: T + } + featured?: T + badge?: T + ctaLabel?: T + ctaHref?: T + sort?: T + updatedAt?: T + createdAt?: T +} +/** + * This interface was referenced by `Config`'s JSON-Schema + * via the `definition` "redirects_select". + */ +export interface RedirectsSelect { + from?: T + to?: + | T + | { + type?: T + reference?: T + url?: T + } + type?: T + updatedAt?: T + createdAt?: T +} +/** + * This interface was referenced by `Config`'s JSON-Schema + * via the `definition` "payload-kv_select". + */ +export interface PayloadKvSelect { + key?: T + data?: T +} +/** + * This interface was referenced by `Config`'s JSON-Schema + * via the `definition` "payload-locked-documents_select". + */ +export interface PayloadLockedDocumentsSelect { + document?: T + globalSlug?: T + user?: T + updatedAt?: T + createdAt?: T +} +/** + * This interface was referenced by `Config`'s JSON-Schema + * via the `definition` "payload-preferences_select". + */ +export interface PayloadPreferencesSelect { + user?: T + key?: T + value?: T + updatedAt?: T + createdAt?: T +} +/** + * This interface was referenced by `Config`'s JSON-Schema + * via the `definition` "payload-migrations_select". + */ +export interface PayloadMigrationsSelect { + name?: T + batch?: T + updatedAt?: T + createdAt?: T +} +/** + * This interface was referenced by `Config`'s JSON-Schema + * via the `definition` "home-page". + */ +export interface HomePage { + id: number + hero?: { + title?: string | null + subtitle?: string | null + ctaLabel?: string | null + ctaHref?: string | null + backgroundVideo?: string | null + backgroundImage?: (number | null) | Media + /** + * Передній план Hero (динозавр PNG з прозорим фоном). Лежить поверх тексту, тільки desktop. + */ + foregroundOverlay?: (number | null) | Media + /** + * Сімейне фото / силует на передньому плані Hero. Десктоп тільки. + */ + silhouetteOverlay?: (number | null) | Media + } + pageHero?: { + /** + * Фото-фон під ліквід-гласс хедером на /lokatsii, /blog, /kvytky, /dni-narodzhennia, /grupovi-vidviduvannia. + */ + backgroundImage?: (number | null) | Media + } + sectionTitles?: { + locations?: string | null + whyParents?: string | null + birthday?: string | null + gallery?: string | null + reviews?: string | null + news?: string | null + } + whyParents?: { + items?: + | { + title?: string | null + description?: string | null + id?: string | null + }[] + | null + sideGallery?: + | { + image?: (number | null) | Media + id?: string | null + }[] + | null + } + gallery?: { + /** + * Завантажте 9 фото для слайдера Фотогалерея — порядок і alt керуйте тут. + */ + images?: + | { + image?: (number | null) | Media + alt?: string | null + id?: string | null + }[] + | null + } + video?: { + poster?: (number | null) | Media + src?: string | null + } + birthdayIntro?: { + text?: string | null + } + news?: { + title?: string | null + /** + * Підзаголовок секції новин на головній. + */ + subtitle?: string | null + limit?: number | null + } + map?: { + /** + * Google Maps iframe src. + */ + embedUrl?: string | null + address?: string | null + lat?: number | null + lng?: number | null + } + meta?: { + title?: string | null + description?: string | null + /** + * Maximum upload file size: 12MB. Recommended file size for images is <500KB. + */ + image?: (number | null) | Media + } + _status?: ('draft' | 'published') | null + updatedAt?: string | null + createdAt?: string | null +} +/** + * This interface was referenced by `Config`'s JSON-Schema + * via the `definition` "checkout-page". + */ +export interface CheckoutPage { + id: number + title?: string | null + /** + * Інструкція для покупця на сторінці оплати + */ + instructions?: { + root: { + type: string + children: { + type: any + version: number + [k: string]: unknown + }[] + direction: ('ltr' | 'rtl') | null + format: 'left' | 'start' | 'center' | 'right' | 'end' | 'justify' | '' + indent: number + version: number + } + [k: string]: unknown + } | null + /** + * Умови та правила (показуються перед кнопкою оплати) + */ + terms?: { + root: { + type: string + children: { + type: any + version: number + [k: string]: unknown + }[] + direction: ('ltr' | 'rtl') | null + format: 'left' | 'start' | 'center' | 'right' | 'end' | 'justify' | '' + indent: number + version: number + } + [k: string]: unknown + } | null + meta?: { + title?: string | null + description?: string | null + /** + * Maximum upload file size: 12MB. Recommended file size for images is <500KB. + */ + image?: (number | null) | Media + } + updatedAt?: string | null + createdAt?: string | null +} +/** + * This interface was referenced by `Config`'s JSON-Schema + * via the `definition` "thank-you-page". + */ +export interface ThankYouPage { + id: number + title?: string | null + /** + * Текст подяки після успішної оплати + */ + message?: { + root: { + type: string + children: { + type: any + version: number + [k: string]: unknown + }[] + direction: ('ltr' | 'rtl') | null + format: 'left' | 'start' | 'center' | 'right' | 'end' | 'justify' | '' + indent: number + version: number + } + [k: string]: unknown + } | null + /** + * Телефон для зв'язку (показується на сторінці подяки) + */ + contactPhone?: string | null + /** + * Email для зв'язку (показується на сторінці подяки) + */ + contactEmail?: string | null + meta?: { + title?: string | null + description?: string | null + /** + * Maximum upload file size: 12MB. Recommended file size for images is <500KB. + */ + image?: (number | null) | Media + } + updatedAt?: string | null + createdAt?: string | null +} +/** + * This interface was referenced by `Config`'s JSON-Schema + * via the `definition` "header". + */ +export interface Header { + id: number + logo?: (number | null) | Media + logoAlt?: string | null + ctaLabel?: string | null + ctaHref?: string | null + navLinks?: + | { + label?: string | null + href?: string | null + openInNewTab?: boolean | null + autoChildrenFrom?: ('none' | 'locations') | null + children?: + | { + label?: string | null + href?: string | null + id?: string | null + }[] + | null + id?: string | null + }[] + | null + updatedAt?: string | null + createdAt?: string | null +} +/** + * This interface was referenced by `Config`'s JSON-Schema + * via the `definition` "footer". + */ +export interface Footer { + id: number + logo?: (number | null) | Media + logoAlt?: string | null + navLinks?: + | { + label?: string | null + href?: string | null + id?: string | null + }[] + | null + contacts?: { + phone?: string | null + email?: string | null + address?: string | null + } + socials?: + | { + platform?: ('instagram' | 'facebook' | 'youtube' | 'tiktok') | null + url?: string | null + id?: string | null + }[] + | null + copyrightText?: string | null + updatedAt?: string | null + createdAt?: string | null +} +/** + * This interface was referenced by `Config`'s JSON-Schema + * via the `definition` "site-settings". + */ +export interface SiteSetting { + id: number + ga4Id?: string | null + binotelId?: string | null + telegramChatId?: string | null + resendFrom?: string | null + defaultMetaTitle?: string | null + defaultMetaDescription?: string | null + defaultOgImage?: (number | null) | Media + /** + * Відповідність ключа з ezy API → назва для відображення на сайті + */ + tariffCategoryLabels?: + | { + /** + * Ключ з ezy API (напр. dyno, dyvolis, maze) + */ + key: string + /** + * Назва для відображення (напр. ДиноПарк) + */ + label: string + id?: string | null + }[] + | null + updatedAt?: string | null + createdAt?: string | null +} +/** + * This interface was referenced by `Config`'s JSON-Schema + * via the `definition` "dyvolis-page". + */ +export interface DyvolisPage { + id: number + heroTitle?: string | null + heroDescription?: string | null + /** + * Число у круглому бейджі (наприклад "60+") + */ + heroStat?: string | null + heroStatLabel?: string | null + heroTips?: + | { + text: string + id?: string | null + }[] + | null + /** + * Час роботи, наприклад "щодня з 11:00 до 20:00" + */ + workingHours?: string | null + galleryQuote?: string | null + /** + * Якщо порожньо — відображаються 24 стандартні фото + */ + galleryImages?: + | { + image: number | Media + id?: string | null + }[] + | null + whyVisitTitle?: string | null + whyVisitItems?: + | { + title: string + description: string + id?: string | null + }[] + | null + /** + * Якщо порожньо — використовуються 7 стандартних відео + */ + reviewVideos?: + | { + /** + * URL відео, напр. /videos/dyvolis/video-01.mp4 + */ + src: string + /** + * URL постеру, напр. /videos/dyvolis/poster-01.jpg + */ + poster?: string | null + /** + * Підпис (опційно) + */ + label?: string | null + id?: string | null + }[] + | null + /** + * Підзаголовок під секцією "Комбо" в блоці квитків + */ + comboDescription?: string | null + meta?: { + title?: string | null + description?: string | null + /** + * Maximum upload file size: 12MB. Recommended file size for images is <500KB. + */ + image?: (number | null) | Media + } + updatedAt?: string | null + createdAt?: string | null +} +/** + * This interface was referenced by `Config`'s JSON-Schema + * via the `definition` "group-visits-page". + */ +export interface GroupVisitsPage { + id: number + heroTitle?: string | null + heroSubtitle?: string | null + formTitle?: string | null + formSubtitle?: string | null + groups?: + | { + /** + * Emoji іконка + */ + icon: string + title: string + description: string + /** + * Напр. "15 осіб" + */ + minPeople: string + /** + * Напр. "15%" + */ + discount: string + id?: string | null + }[] + | null + meta?: { + title?: string | null + description?: string | null + /** + * Maximum upload file size: 12MB. Recommended file size for images is <500KB. + */ + image?: (number | null) | Media + } + _status?: ('draft' | 'published') | null + updatedAt?: string | null + createdAt?: string | null +} +/** + * This interface was referenced by `Config`'s JSON-Schema + * via the `definition` "birthday-page". + */ +export interface BirthdayPage { + id: number + heroTitle?: string | null + heroSubtitle?: string | null + formTitle?: string | null + formSubtitle?: string | null + meta?: { + title?: string | null + description?: string | null + /** + * Maximum upload file size: 12MB. Recommended file size for images is <500KB. + */ + image?: (number | null) | Media + } + _status?: ('draft' | 'published') | null + updatedAt?: string | null + createdAt?: string | null +} +/** + * This interface was referenced by `Config`'s JSON-Schema + * via the `definition` "tickets-page". + */ +export interface TicketsPage { + id: number + heroTitle?: string | null + heroSubtitle?: string | null + sectionTitleBirthday?: string | null + sectionTitleGroups?: string | null + meta?: { + title?: string | null + description?: string | null + /** + * Maximum upload file size: 12MB. Recommended file size for images is <500KB. + */ + image?: (number | null) | Media + } + _status?: ('draft' | 'published') | null + updatedAt?: string | null + createdAt?: string | null +} +/** + * This interface was referenced by `Config`'s JSON-Schema + * via the `definition` "locations-page". + */ +export interface LocationsPage { + id: number + heroTitle?: string | null + heroSubtitle?: string | null + meta?: { + title?: string | null + description?: string | null + /** + * Maximum upload file size: 12MB. Recommended file size for images is <500KB. + */ + image?: (number | null) | Media + } + _status?: ('draft' | 'published') | null + updatedAt?: string | null + createdAt?: string | null +} +/** + * This interface was referenced by `Config`'s JSON-Schema + * via the `definition` "blog-index-page". + */ +export interface BlogIndexPage { + id: number + heroTitle?: string | null + heroSubtitle?: string | null + meta?: { + title?: string | null + description?: string | null + /** + * Maximum upload file size: 12MB. Recommended file size for images is <500KB. + */ + image?: (number | null) | Media + } + _status?: ('draft' | 'published') | null + updatedAt?: string | null + createdAt?: string | null +} +/** + * This interface was referenced by `Config`'s JSON-Schema + * via the `definition` "home-page_select". + */ +export interface HomePageSelect { + hero?: + | T + | { + title?: T + subtitle?: T + ctaLabel?: T + ctaHref?: T + backgroundVideo?: T + backgroundImage?: T + foregroundOverlay?: T + silhouetteOverlay?: T + } + pageHero?: + | T + | { + backgroundImage?: T + } + sectionTitles?: + | T + | { + locations?: T + whyParents?: T + birthday?: T + gallery?: T + reviews?: T + news?: T + } + whyParents?: + | T + | { + items?: + | T + | { + title?: T + description?: T + id?: T + } + sideGallery?: + | T + | { + image?: T + id?: T + } + } + gallery?: + | T + | { + images?: + | T + | { + image?: T + alt?: T + id?: T + } + } + video?: + | T + | { + poster?: T + src?: T + } + birthdayIntro?: + | T + | { + text?: T + } + news?: + | T + | { + title?: T + subtitle?: T + limit?: T + } + map?: + | T + | { + embedUrl?: T + address?: T + lat?: T + lng?: T + } + meta?: + | T + | { + title?: T + description?: T + image?: T + } + _status?: T + updatedAt?: T + createdAt?: T + globalType?: T +} +/** + * This interface was referenced by `Config`'s JSON-Schema + * via the `definition` "checkout-page_select". + */ +export interface CheckoutPageSelect { + title?: T + instructions?: T + terms?: T + meta?: + | T + | { + title?: T + description?: T + image?: T + } + updatedAt?: T + createdAt?: T + globalType?: T +} +/** + * This interface was referenced by `Config`'s JSON-Schema + * via the `definition` "thank-you-page_select". + */ +export interface ThankYouPageSelect { + title?: T + message?: T + contactPhone?: T + contactEmail?: T + meta?: + | T + | { + title?: T + description?: T + image?: T + } + updatedAt?: T + createdAt?: T + globalType?: T +} +/** + * This interface was referenced by `Config`'s JSON-Schema + * via the `definition` "header_select". + */ +export interface HeaderSelect { + logo?: T + logoAlt?: T + ctaLabel?: T + ctaHref?: T + navLinks?: + | T + | { + label?: T + href?: T + openInNewTab?: T + autoChildrenFrom?: T + children?: + | T + | { + label?: T + href?: T + id?: T + } + id?: T + } + updatedAt?: T + createdAt?: T + globalType?: T +} +/** + * This interface was referenced by `Config`'s JSON-Schema + * via the `definition` "footer_select". + */ +export interface FooterSelect { + logo?: T + logoAlt?: T + navLinks?: + | T + | { + label?: T + href?: T + id?: T + } + contacts?: + | T + | { + phone?: T + email?: T + address?: T + } + socials?: + | T + | { + platform?: T + url?: T + id?: T + } + copyrightText?: T + updatedAt?: T + createdAt?: T + globalType?: T +} +/** + * This interface was referenced by `Config`'s JSON-Schema + * via the `definition` "site-settings_select". + */ +export interface SiteSettingsSelect { + ga4Id?: T + binotelId?: T + telegramChatId?: T + resendFrom?: T + defaultMetaTitle?: T + defaultMetaDescription?: T + defaultOgImage?: T + tariffCategoryLabels?: + | T + | { + key?: T + label?: T + id?: T + } + updatedAt?: T + createdAt?: T + globalType?: T +} +/** + * This interface was referenced by `Config`'s JSON-Schema + * via the `definition` "dyvolis-page_select". + */ +export interface DyvolisPageSelect { + heroTitle?: T + heroDescription?: T + heroStat?: T + heroStatLabel?: T + heroTips?: + | T + | { + text?: T + id?: T + } + workingHours?: T + galleryQuote?: T + galleryImages?: + | T + | { + image?: T + id?: T + } + whyVisitTitle?: T + whyVisitItems?: + | T + | { + title?: T + description?: T + id?: T + } + reviewVideos?: + | T + | { + src?: T + poster?: T + label?: T + id?: T + } + comboDescription?: T + meta?: + | T + | { + title?: T + description?: T + image?: T + } + updatedAt?: T + createdAt?: T + globalType?: T +} +/** + * This interface was referenced by `Config`'s JSON-Schema + * via the `definition` "group-visits-page_select". + */ +export interface GroupVisitsPageSelect { + heroTitle?: T + heroSubtitle?: T + formTitle?: T + formSubtitle?: T + groups?: + | T + | { + icon?: T + title?: T + description?: T + minPeople?: T + discount?: T + id?: T + } + meta?: + | T + | { + title?: T + description?: T + image?: T + } + _status?: T + updatedAt?: T + createdAt?: T + globalType?: T +} +/** + * This interface was referenced by `Config`'s JSON-Schema + * via the `definition` "birthday-page_select". + */ +export interface BirthdayPageSelect { + heroTitle?: T + heroSubtitle?: T + formTitle?: T + formSubtitle?: T + meta?: + | T + | { + title?: T + description?: T + image?: T + } + _status?: T + updatedAt?: T + createdAt?: T + globalType?: T +} +/** + * This interface was referenced by `Config`'s JSON-Schema + * via the `definition` "tickets-page_select". + */ +export interface TicketsPageSelect { + heroTitle?: T + heroSubtitle?: T + sectionTitleBirthday?: T + sectionTitleGroups?: T + meta?: + | T + | { + title?: T + description?: T + image?: T + } + _status?: T + updatedAt?: T + createdAt?: T + globalType?: T +} +/** + * This interface was referenced by `Config`'s JSON-Schema + * via the `definition` "locations-page_select". + */ +export interface LocationsPageSelect { + heroTitle?: T + heroSubtitle?: T + meta?: + | T + | { + title?: T + description?: T + image?: T + } + _status?: T + updatedAt?: T + createdAt?: T + globalType?: T +} +/** + * This interface was referenced by `Config`'s JSON-Schema + * via the `definition` "blog-index-page_select". + */ +export interface BlogIndexPageSelect { + heroTitle?: T + heroSubtitle?: T + meta?: + | T + | { + title?: T + description?: T + image?: T + } + _status?: T + updatedAt?: T + createdAt?: T + globalType?: T +} +/** + * This interface was referenced by `Config`'s JSON-Schema + * via the `definition` "collections_widget". + */ +export interface CollectionsWidget { + data?: { + [k: string]: unknown + } + width: 'full' +} +/** + * This interface was referenced by `Config`'s JSON-Schema + * via the `definition` "auth". + */ +export interface Auth { + [k: string]: unknown +} + +declare module 'payload' { + export interface GeneratedTypes extends Config {} +}