Initial release of Moniki paid services site and CMS (v1.0.0).

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
Alexey Novikov
2026-09-16 13:10:25 +03:00
co-authored by Cursor
commit 8abd8d06dd
263 changed files with 24973 additions and 0 deletions
+100
View File
@@ -0,0 +1,100 @@
import type { CollectionConfig } from 'payload'
import { ADMIN_GROUP } from '../admin/groups'
export const Banners: CollectionConfig = {
slug: 'banners',
labels: { singular: 'Баннер', plural: 'Баннеры' },
admin: {
group: ADMIN_GROUP.content,
useAsTitle: 'title',
defaultColumns: ['title', 'sortOrder', 'isPublished', 'updatedAt'],
description: 'Слайды главного баннера на главной странице. Порядок, тексты, кнопки, фото и видео задаются здесь.',
},
access: { read: () => true },
defaultSort: 'sortOrder',
fields: [
{
type: 'tabs',
tabs: [
{
label: 'Текст',
fields: [
{ name: 'eyebrow', type: 'text', localized: true, label: 'Надзаголовок', admin: { description: 'Например, МОНИКИ' } },
{ name: 'title', type: 'text', required: true, localized: true, label: 'Заголовок' },
{ name: 'subtitle', type: 'textarea', localized: true, label: 'Подзаголовок' },
{ name: 'phone', type: 'text', label: 'Телефон' },
{ name: 'address', type: 'text', localized: true, label: 'Адрес' },
],
},
{
label: 'Медиа',
fields: [
{
name: 'image',
type: 'upload',
relationTo: 'media',
label: 'Фото слайда',
admin: { description: 'Постер, если есть видео, или основное изображение слайда.' },
},
{
name: 'imageUrl',
type: 'text',
label: 'URL фото (если не загружено в медиа)',
admin: { description: 'Например /hero/diagnostics.jpg' },
},
{ name: 'imageAlt', type: 'text', localized: true, label: 'Alt фото' },
{
name: 'video',
type: 'upload',
relationTo: 'media',
label: 'Видео слайда',
admin: { description: 'Если задано, на слайде показывается видео. Запускается по клику.' },
},
{
name: 'videoUrl',
type: 'text',
label: 'URL видео (если не загружено в медиа)',
admin: { description: 'Например /hero/250-white.mp4' },
},
{
name: 'background',
type: 'upload',
relationTo: 'media',
label: 'Фон организации',
admin: { description: 'Размытый фон секции. Если пусто — используется фото здания МОНИКИ.' },
},
{
name: 'backgroundUrl',
type: 'text',
label: 'URL фона (если не загружено в медиа)',
},
],
},
{
label: 'Кнопки',
fields: [
{ name: 'ctaPrimaryLabel', type: 'text', localized: true, label: 'Основная кнопка' },
{ name: 'ctaPrimaryHref', type: 'text', label: 'Ссылка основной кнопки' },
{ name: 'ctaSecondaryLabel', type: 'text', localized: true, label: 'Вторая кнопка' },
{ name: 'ctaSecondaryHref', type: 'text', label: 'Ссылка второй кнопки' },
],
},
{
label: 'Показ',
fields: [
{ name: 'slug', type: 'text', required: true, unique: true, label: 'Символьный код' },
{ name: 'sortOrder', type: 'number', defaultValue: 0, label: 'Порядок' },
{
name: 'durationMs',
type: 'number',
defaultValue: 7000,
label: 'Время показа (мс)',
admin: { description: 'Автопереключение слайда, 5000–12000' },
},
{ name: 'isPublished', type: 'checkbox', defaultValue: true, label: 'Опубликован' },
],
},
],
},
],
}