- 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
77 lines
2.2 KiB
Svelte
77 lines
2.2 KiB
Svelte
<script>
|
|
export let block;
|
|
export let onChange;
|
|
|
|
let showAdv = false;
|
|
const update = (patch) => onChange({ ...block.data, ...patch });
|
|
</script>
|
|
|
|
<label>
|
|
Текст кнопки
|
|
<input type="text" value={block.data.text ?? ""} on:input={(e) => update({ text: e.target.value })} />
|
|
</label>
|
|
|
|
<label>
|
|
Ссылка (href)
|
|
<input type="text" value={block.data.href ?? ""} on:input={(e) => update({ href: e.target.value })} />
|
|
</label>
|
|
|
|
<label class="inline">
|
|
<input
|
|
type="checkbox"
|
|
checked={block.data.removeBottomSpacing}
|
|
on:change={(e) => update({ removeBottomSpacing: e.target.checked })}
|
|
/>
|
|
Убрать отступ после блока
|
|
</label>
|
|
|
|
<div class="advanced-wrapper">
|
|
<button class="btn-advanced-toggle" class:is-open={showAdv} type="button" on:click={() => (showAdv = !showAdv)}>
|
|
Доп. настройки
|
|
</button>
|
|
{#if showAdv}
|
|
<div class="advanced-panel">
|
|
<label>
|
|
Ширина (px)
|
|
<input
|
|
type="number"
|
|
value={block.data.width ?? 340}
|
|
on:input={(e) => update({ width: parseInt(e.target.value, 10) || 0 })}
|
|
/>
|
|
</label>
|
|
<label>
|
|
Высота (px)
|
|
<input
|
|
type="number"
|
|
value={block.data.height ?? 45}
|
|
on:input={(e) => update({ height: parseInt(e.target.value, 10) || 0 })}
|
|
/>
|
|
</label>
|
|
<label>
|
|
Цвет фона (#hex)
|
|
<input type="text" value={block.data.bgColor ?? "#242424"} on:input={(e) => update({ bgColor: e.target.value })} />
|
|
</label>
|
|
<label>
|
|
Цвет текста (#hex)
|
|
<input type="text" value={block.data.textColor ?? "#ffffff"} on:input={(e) => update({ textColor: e.target.value })} />
|
|
</label>
|
|
<label>
|
|
Размер шрифта (px)
|
|
<input
|
|
type="number"
|
|
value={block.data.fontSize ?? 16}
|
|
on:input={(e) => update({ fontSize: parseInt(e.target.value, 10) || 0 })}
|
|
/>
|
|
</label>
|
|
<label>
|
|
Отступ снизу (px)
|
|
<input
|
|
type="number"
|
|
value={block.data.bottomSpacing ?? 40}
|
|
on:input={(e) => update({ bottomSpacing: parseInt(e.target.value, 10) || 0 })}
|
|
/>
|
|
</label>
|
|
</div>
|
|
{/if}
|
|
</div>
|