Files
aspekter/z51-pug-builder/data-dev.backup.20260220_004027/z51/letters/ced0b6a1-73ac-4c1e-bf68-2516b7641044.json
s.zotov 718821fdd6 Initial commit: ASPEKTER — визуальный конструктор email-рассылок
- z51-pug-builder: Svelte 5 SPA, визуальный редактор Pug-писем
- email-gen: Node.js рендерер Pug→HTML через email-templates + Juice
- email-gen-api: HTTP сервер рендеринга (порт 8787)
- coin-scout: сервис подбора монет из фидов
- Docker Compose для dev/prod
- Nginx конфиг с SSL для app.aspekter.ru
2026-04-13 11:36:39 +05:00

498 lines
24 KiB
JSON
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
{
"id": "ced0b6a1-73ac-4c1e-bf68-2516b7641044",
"name": "19-02-2026 Winx Club",
"title": "Winx Club",
"date": "2026-02-19",
"createdAt": "2026-02-18T11:09:24.751Z",
"updatedAt": "2026-02-18T11:58:20.745Z",
"blocks": [
{
"name": "Заголовок зеленый",
"content": "tr \n td.paddingWrapperBig\n +defaultTable(\"100%\")\n tr \n td(align=\"center\")\n span.text.smallHeader.bold.greenText Привет, колдун!",
"collapsed": false,
"schema": [
{
"type": "text",
"label": "Текст",
"lineIndex": 5
}
],
"addSpacing": true,
"spacing": 20
},
{
"name": "Текст",
"content": "tr \n td.paddingWrapperBig\n +defaultTable(\"100%\")\n tr \n td \n span.text.groceryText Помнишь те времена, когда ты возвращался из школы и включал телевизор? Давай честно, ты тоже залипал на приключения фей из Алфеи! Даже я на своей планетке подрубался к стриму с Земли...",
"collapsed": true,
"schema": [
{
"type": "text",
"label": "Текст",
"lineIndex": 5,
"paragraphIndex": 1,
"removable": false
}
],
"addSpacing": true,
"spacing": 40
},
{
"name": "Банер",
"content": "tr \n td(align=\"center\") \n a(href=\"https://z51.ru/\" target=\"_blank\")\n img(src=\"https://z51.ru/upload/email/newsletter-2026/02-18/1.png\" alt=\"pic\" style=\"display: block\" width=\"600\")",
"collapsed": true,
"schema": [
{
"type": "href",
"label": "Ссылка",
"lineIndex": 2,
"occurrence": 0
},
{
"type": "src",
"label": "Картинка",
"lineIndex": 3,
"occurrence": 0
}
],
"addSpacing": true
},
{
"name": "Текст",
"content": "tr \n td.paddingWrapperBig\n +defaultTable(\"100%\")\n tr \n td \n span.text.groceryText Так вот, студия Iron Frog и издатель Maximum Entertainment решили, что пора, и анонсировали Winx Club: The Magic is Back. Игра выходит на ПК и консолях уже в апреле 2026 года!\n +spacerLine(20)\n tr\n td\n span.text.groceryText Ностальгия в глаз попала? Отвлекись на кресла, там тоже есть на что залипнуть:",
"collapsed": true,
"schema": [
{
"type": "text",
"label": "Текст",
"lineIndex": 5,
"paragraphIndex": 1,
"removable": false
},
{
"type": "text",
"label": "Текст",
"lineIndex": 9,
"paragraphIndex": 2,
"removable": true
}
],
"addSpacing": true,
"spacing": 25
},
{
"name": "Кнопка",
"content": "tr \n td(align=\"center\").paddingWrapper \n +buttonRounded(\"Залипнуть\", \"https://z51.ru/catalog/\", 525, 42, \"#c9e905\", 18, \"#000000\", 4, \"#c9e905\").bold.text",
"collapsed": false,
"schema": [
{
"type": "mixin-text",
"label": "Текст кнопки",
"lineIndex": 2,
"argIndex": 0
},
{
"type": "mixin-href",
"label": "Ссылка кнопки",
"lineIndex": 2,
"argIndex": 1
}
],
"addSpacing": true
},
{
"name": "3 товара в ряд",
"content": "+products3inRow({\n '145105': {\n imageSrc: '',\n name: 'Imperial Royal',\n category: 'Королевский трон у тебя дома',\n },\n '144171': {\n imageSrc: '',\n name: 'Cardinal',\n category: 'Для настоящих кардиналов',\n },\n '142097': {\n imageSrc: '',\n name: 'Cyberpunk Limited',\n category: 'Только для потных каток!',\n },\n})",
"collapsed": false,
"schema": [
{
"type": "raw",
"label": "Код блока"
}
],
"addSpacing": true
},
{
"name": "Две кнопки",
"content": "tr \n td.paddingWrapper \n +defaultTable(\"100%\")\n tr \n td(width=\"250\")\n +defaultTable(\"250\")\n tr \n td(align=\"center\")\n +buttonRounded(\"Игровые кресла\", \"https://z51.ru/catalog/kresla/\", 240, 42, \"#c9e905\", 18, \"#000000\", 4, \"#c9e905\").bold.text\n +tdFixed(36)\n td(width=\"250\")\n +defaultTable(\"250\")\n tr \n td(align=\"center\")\n +buttonRounded(\"Эргономичные кресла\", \"https://z51.ru/catalog/ergonomic-office-chairs/\", 240, 42, \"#c9e905\", 18, \"#000000\", 4, \"#c9e905\", 4).bold.text",
"collapsed": false,
"schema": [
{
"type": "mixin-text",
"label": "Текст кнопки",
"lineIndex": 8,
"argIndex": 0
},
{
"type": "mixin-href",
"label": "Ссылка кнопки",
"lineIndex": 8,
"argIndex": 1
},
{
"type": "mixin-text",
"label": "Текст кнопки",
"lineIndex": 14,
"argIndex": 0
},
{
"type": "mixin-href",
"label": "Ссылка кнопки",
"lineIndex": 14,
"argIndex": 1
}
],
"addSpacing": true
},
{
"name": "Разделитель",
"content": "+dividerZ(525, 2)\n+spacerLine(40)",
"collapsed": false,
"schema": [],
"addSpacing": true
},
{
"name": "Заголовок зеленый",
"content": "tr \n td.paddingWrapperBig\n +defaultTable(\"100%\")\n tr \n td(align=\"center\")\n span.text.smallHeader.bold.greenText ЭНЧАНТИКС!",
"collapsed": false,
"schema": [
{
"type": "text",
"label": "Текст",
"lineIndex": 5
}
],
"addSpacing": true,
"spacing": 20
},
{
"name": "Текст",
"content": "tr \n td.paddingWrapperBig\n +defaultTable(\"100%\")\n tr \n td \n span.text.groceryText Разрабы обещают вернуть дух оригинального сериала, но в современной оболочке. Что нас ждет:",
"collapsed": false,
"schema": [
{
"type": "text",
"label": "Текст",
"lineIndex": 5,
"paragraphIndex": 1,
"removable": false
}
],
"addSpacing": true,
"spacing": 20
},
{
"name": "Маркированный список",
"content": "\ntr \n td.paddingWrapper\n +defaultTable(\"100%\")\n tr \n +tdFixed(12, \"center\", \"top\").markerPadding\n img(src=\"https://z51.ru/upload/email/master-template/markers/marker.png\" alt=\"\" width=\"12\")\n +tdFixed(16)\n td \n span.text.groceryText Магические бои — да, пострелять заклинаниями все-таки дадут.\n tr \n +tdFixed(12, \"center\", \"top\").markerPadding\n img(src=\"https://z51.ru/upload/email/master-template/markers/marker.png\" alt=\"\" width=\"12\")\n +tdFixed(16)\n td \n span.text.groceryText Головоломки — без них никуда, Алфея не терпит тупых!\n tr \n +tdFixed(12, \"center\", \"top\").markerPadding\n img(src=\"https://z51.ru/upload/email/master-template/markers/marker.png\" alt=\"\" width=\"12\")\n +tdFixed(16)\n td \n span.text.groceryText Кооператив — причем локальный на двоих. Можно позвать друга и наконец-то выяснить, кто из вас помнит имена всех фей.",
"collapsed": false,
"schema": [
{
"type": "list-item",
"label": "Пункт",
"lineIndex": 9,
"itemIndex": 0,
"removable": false
},
{
"type": "list-item",
"label": "Пункт",
"lineIndex": 15,
"itemIndex": 1,
"removable": true
},
{
"type": "list-item",
"label": "Пункт",
"lineIndex": 21,
"itemIndex": 2,
"removable": true
}
],
"addSpacing": true,
"spacing": 20
},
{
"name": "Текст",
"content": "tr \n td.paddingWrapperBig\n +defaultTable(\"100%\")\n tr \n td \n span.text.groceryText Управлять можно всеми шестью феями оригинального состава: Блум, Стеллой, Флорой, Музой, Текной и Лейлой (вот тебе все имена, если вдруг подзабыл).",
"collapsed": false,
"schema": [
{
"type": "text",
"label": "Текст",
"lineIndex": 5,
"paragraphIndex": 1,
"removable": false
}
],
"addSpacing": true
},
{
"name": "Банер",
"content": "tr \n td(align=\"center\") \n a(href=\"https://z51.ru\" target=\"_blank\")\n img(src=\"https://z51.ru/upload/email/newsletter-2026/02-18/2.png\" alt=\"pic\" style=\"display: block\" width=\"600\")",
"collapsed": false,
"schema": [
{
"type": "href",
"label": "Ссылка",
"lineIndex": 2,
"occurrence": 0
},
{
"type": "src",
"label": "Картинка",
"lineIndex": 3,
"occurrence": 0
}
],
"addSpacing": true
},
{
"name": "Разделитель",
"content": "+dividerZ(525, 2)\n+spacerLine(40)",
"collapsed": false,
"schema": [],
"addSpacing": true
},
{
"name": "Заголовок зеленый",
"content": "tr \n td.paddingWrapperBig\n +defaultTable(\"100%\")\n tr \n td(align=\"center\")\n span.text.smallHeader.bold.greenText Где колдуем?",
"collapsed": false,
"schema": [
{
"type": "text",
"label": "Текст",
"lineIndex": 5
}
],
"addSpacing": true
},
{
"name": "Текст",
"content": "tr \n td.paddingWrapperBig\n +defaultTable(\"100%\")\n tr \n td \n span.text.groceryText Карта локаций обещает быть сочной и прямиком из детства:\n",
"collapsed": false,
"schema": [
{
"type": "text",
"label": "Текст",
"lineIndex": 5,
"paragraphIndex": 1,
"removable": false
}
],
"addSpacing": true,
"spacing": 30
},
{
"name": "Текст",
"content": "tr \n td.paddingWrapperBig\n +defaultTable(\"100%\")\n tr \n td \n span.text.groceryText 1. Школа Алфея;<br>2. Зачарованный лес;<br>3. Прибрежные утесы;<br>4. Красный Фонтан (это где беловолосые мужики тусовались).",
"collapsed": false,
"schema": [
{
"type": "text",
"label": "Текст",
"lineIndex": 5,
"paragraphIndex": 1,
"removable": false
}
],
"addSpacing": true
},
{
"name": "Текст",
"content": "tr \n td.paddingWrapperBig\n +defaultTable(\"100%\")\n tr \n td \n span.text.groceryText Игрокам предстоит отражать атаки фантастических тварей, прокачивать заклинания и&nbsp;становиться сильнее. Всё как мы&nbsp;любим: и&nbsp;фан, и&nbsp;фарма.",
"collapsed": false,
"schema": [
{
"type": "text",
"label": "Текст",
"lineIndex": 5,
"paragraphIndex": 1,
"removable": false
}
],
"addSpacing": true
},
{
"name": "Разделитель",
"content": "+dividerZ(525, 2)\n+spacerLine(40)",
"collapsed": false,
"schema": [],
"addSpacing": true
},
{
"name": "Заголовок зеленый",
"content": "tr \n td.paddingWrapperBig\n +defaultTable(\"100%\")\n tr \n td(align=\"center\")\n span.text.smallHeader.bold.greenText ЖДЕШЬ?!",
"collapsed": false,
"schema": [
{
"type": "text",
"label": "Текст",
"lineIndex": 5
}
],
"addSpacing": true,
"spacing": 20
},
{
"name": "Текст",
"content": "tr \n td.paddingWrapperBig\n +defaultTable(\"100%\")\n tr \n td \n span.text.groceryText Не&nbsp;знаю, как&nbsp;ты, а&nbsp;я&nbsp;прям вдохновился... Понятно, что это все рофл, но&nbsp;все-таки я&nbsp;хочу, чтобы игруля вышла достойной и&nbsp;не&nbsp;опозорила честь школы волшебниц!\n +spacerLine(20)\n tr\n td\n span.text.groceryText А&nbsp;вот кто всегда держит марку, так это мои кресла (иначе я&nbsp;их&nbsp;сжигаю, ха-ха-ха):",
"collapsed": false,
"schema": [
{
"type": "text",
"label": "Текст",
"lineIndex": 5,
"paragraphIndex": 1,
"removable": false
},
{
"type": "text",
"label": "Текст",
"lineIndex": 9,
"paragraphIndex": 2,
"removable": true
}
],
"addSpacing": true
},
{
"name": "Кнопка",
"content": "tr \n td(align=\"center\").paddingWrapper \n +buttonRounded(\"Чекнуть\", \"https://z51.ru/catalog/\", 525, 42, \"#c9e905\", 18, \"#000000\", 4, \"#c9e905\").bold.text",
"collapsed": false,
"schema": [
{
"type": "mixin-text",
"label": "Текст кнопки",
"lineIndex": 2,
"argIndex": 0
},
{
"type": "mixin-href",
"label": "Ссылка кнопки",
"lineIndex": 2,
"argIndex": 1
}
],
"addSpacing": true
},
{
"name": "3 товара в ряд",
"content": "+products3inRow({\n '144270': {\n imageSrc: '',\n name: 'Tanuki',\n category: 'Удача всегда с тобой',\n },\n '144839': {\n imageSrc: '',\n name: 'Bad Bunny',\n category: 'Осторожно, кролик плохой!',\n },\n '141580': {\n imageSrc: '',\n name: 'Aniki',\n category: 'Дэнжн-мастер',\n },\n})",
"collapsed": false,
"schema": [
{
"type": "raw",
"label": "Код блока"
}
],
"addSpacing": true
},
{
"name": "Две кнопки",
"content": "tr \n td.paddingWrapper \n +defaultTable(\"100%\")\n tr \n td(width=\"250\")\n +defaultTable(\"250\")\n tr \n td(align=\"center\")\n +buttonRounded(\"Игровые кресла\", \"https://z51.ru/catalog/kresla/\", 240, 42, \"#c9e905\", 18, \"#000000\", 4, \"#c9e905\").bold.text\n +tdFixed(36)\n td(width=\"250\")\n +defaultTable(\"250\")\n tr \n td(align=\"center\")\n +buttonRounded(\"Эргономичные кресла\", \"https://z51.ru/catalog/ergonomic-office-chairs/\", 240, 42, \"#c9e905\", 18, \"#000000\", 4, \"#c9e905\", 4).bold.text",
"collapsed": false,
"schema": [
{
"type": "mixin-text",
"label": "Текст кнопки",
"lineIndex": 8,
"argIndex": 0
},
{
"type": "mixin-href",
"label": "Ссылка кнопки",
"lineIndex": 8,
"argIndex": 1
},
{
"type": "mixin-text",
"label": "Текст кнопки",
"lineIndex": 14,
"argIndex": 0
},
{
"type": "mixin-href",
"label": "Ссылка кнопки",
"lineIndex": 14,
"argIndex": 1
}
],
"addSpacing": true
},
{
"name": "Разделитель",
"content": "+dividerZ(525, 2)\n+spacerLine(40)",
"collapsed": false,
"schema": [],
"addSpacing": true
},
{
"name": "Блок преимуществ",
"content": "tr \n td.paddingWrapperBig\n +defaultTable(\"100%\")\n tr \n td(align=\"center\")\n span.text.smallHeader.bold.greenText Почему выбирают товары у Баззи?\n\n+spacerLine(40)\n\ntr \n td.paddingWrapper \n +defaultTable(\"100%\")\n tr \n td(width=\"250\" valign=\"top\")\n +defaultTable(\"250\")\n //Unordered List\n tr \n td\n +defaultTable(\"100%\")\n tr \n +tdFixed(12, \"center\", \"top\").markerPadding\n img(src=\"https://z51.ru/upload/email/master-template/markers/marker.png\" alt=\"pic\" width=\"12\")\n +tdFixed(10)\n td \n span.groceryText <span style=\"font-weight: 700; color: #DAFD04;\">Официальный магазин</span><br />В наличии всё самое вкусное от ZONE&nbsp;51 — кресла, столы, периферия и аксессуары\n +spacerLine(20)\n tr \n +tdFixed(12, \"center\", \"top\").markerPadding\n img(src=\"https://z51.ru/upload/email/master-template/markers/marker.png\" alt=\"pic\" width=\"12\")\n +tdFixed(10)\n td \n span.groceryText <span style=\"font-weight: 700; color: #DAFD04;\">Первоклассные и&nbsp;надежные продукты</span><br />Из качественных, инопланетных и безопасных материалов для себя, родных и&nbsp;друзей. Не&nbsp;понравилось? Можешь вернуть в&nbsp;течение 28 дней с&nbsp;даты приобретения\n +tdFixed(36)\n td(width=\"250\" valign=\"top\")\n +defaultTable(\"250\")\n tr \n td\n +defaultTable(\"100%\")\n tr \n +tdFixed(12, \"center\", \"top\").markerPadding\n img(src=\"https://z51.ru/upload/email/master-template/markers/marker.png\" alt=\"pic\" width=\"12\")\n +tdFixed(10)\n td \n span.groceryText <span style=\"font-weight: 700; color: #DAFD04;\">Новинки и эксклюзивы</span><br />Я постоянно потею над&nbsp;новыми товарами, которые можно приобрести только здесь\n +spacerLine(20)\n tr \n +tdFixed(12, \"center\", \"top\").markerPadding\n img(src=\"https://z51.ru/upload/email/master-template/markers/marker.png\" alt=\"pic\" width=\"12\")\n +tdFixed(10)\n td \n span.groceryText <span style=\"font-weight: 700; color: #DAFD04;\">Клиенто-ориентированность</span><br />Даю до 3 лет гарантии на&nbsp;свой товар +1 год за&nbsp;покупку в&nbsp;фирменном магазине ZONE&nbsp;51 (онлайн и&nbsp;офлайн), а&nbsp;человеки у&nbsp;трубки помогут быстро обкашлять любые вопросы\n+spacerLine(40)\n\ntr \n td(align=\"center\").paddingWrapper \n +buttonRounded(\"Залетай к нам!\", \"https://z51.ru/\", 300, 42, \"#c9e905\", 18, \"#000000\", 4, \"#c9e905\").bold.text",
"collapsed": false,
"schema": [
{
"type": "text",
"label": "Текст",
"lineIndex": 5
},
{
"type": "src",
"label": "Картинка",
"lineIndex": 21,
"occurrence": 0
},
{
"type": "text",
"label": "Текст",
"lineIndex": 24
},
{
"type": "src",
"label": "Картинка",
"lineIndex": 28,
"occurrence": 0
},
{
"type": "text",
"label": "Текст",
"lineIndex": 31
},
{
"type": "src",
"label": "Картинка",
"lineIndex": 40,
"occurrence": 0
},
{
"type": "text",
"label": "Текст",
"lineIndex": 43
},
{
"type": "src",
"label": "Картинка",
"lineIndex": 47,
"occurrence": 0
},
{
"type": "text",
"label": "Текст",
"lineIndex": 50
},
{
"type": "mixin-text",
"label": "Текст кнопки",
"lineIndex": 55,
"argIndex": 0
},
{
"type": "mixin-href",
"label": "Ссылка кнопки",
"lineIndex": 55,
"argIndex": 1
}
],
"addSpacing": false
}
]
}