feat(email): WYSIWYG template editor with variable substitution

- Add emailSubject{De,En} + emailBodyHtml{De,En} to ShopSettings
- New RichTextEditor component (TipTap) with toolbar + variable insert
- Settings UI: Email templates section per language
- email.server.ts: substitute {{var}} placeholders, fall back to defaults
- Default vars: invoiceNumber, customerName, customerFirstName, orderName,
  totalGross, dueDate, companyName, ownerName
This commit is contained in:
Gerhard Scheikl
2026-05-08 23:06:40 +02:00
parent 537dfd34cb
commit 04933fcac6
8 changed files with 1120 additions and 11 deletions
+2 -2
View File
@@ -165,8 +165,8 @@ export default function InvoicesPage() {
</s-stack>
{isLoading ? (
<s-stack direction="inline" gap="small" alignItems="center">
<s-spinner size="small" accessibilityLabel="Loading orders" />
<s-stack direction="inline" gap="base" alignItems="center">
<s-spinner size="base" accessibilityLabel="Loading orders" />
<s-text tone="neutral">Loading</s-text>
</s-stack>
) : orders.length === 0 ? (