chore: lint and format
All checks were successful
Build and Push Backend Image / build (push) Successful in 50s

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-03-11 11:36:18 +01:00
parent 22a2e63687
commit 9b8b07c653
5 changed files with 108 additions and 104 deletions

View File

@@ -2,17 +2,17 @@
@theme {
/* ── Design tokens — exact mirror of frontend app.css :root ── */
--color-background: oklch(0.98 0.01 320);
--color-foreground: oklch(0.08 0.02 280);
--color-card: oklch(0.99 0.005 320);
--color-card-foreground: oklch(0.08 0.02 280);
--color-muted: oklch(0.95 0.01 280);
--color-muted-foreground: oklch(0.4 0.02 280);
--color-border: oklch(0.85 0.02 280);
--color-primary: oklch(56.971% 0.27455 319.257);
--color-background: oklch(0.98 0.01 320);
--color-foreground: oklch(0.08 0.02 280);
--color-card: oklch(0.99 0.005 320);
--color-card-foreground: oklch(0.08 0.02 280);
--color-muted: oklch(0.95 0.01 280);
--color-muted-foreground: oklch(0.4 0.02 280);
--color-border: oklch(0.85 0.02 280);
--color-primary: oklch(56.971% 0.27455 319.257);
--color-primary-foreground: oklch(0.98 0.01 320);
/* ── Font ── */
--font-sans: 'Noto Sans', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto,
Helvetica, Arial, sans-serif;
--font-sans:
"Noto Sans", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;
}

View File

@@ -13,10 +13,7 @@ export interface RenderOptions {
[key: string]: unknown;
}
export async function renderTemplate(
name: string,
locals: RenderOptions,
): Promise<string> {
export async function renderTemplate(name: string, locals: RenderOptions): Promise<string> {
// Dynamic import: @maizzle/framework v6 is ESM-only
const { render } = await import("@maizzle/framework");
@@ -35,7 +32,7 @@ export async function renderTemplate(
},
},
locals: {
cssPath: CSS_PATH, // layout uses {{ cssPath }} in <link href="{{ cssPath }}" inline>
cssPath: CSS_PATH, // layout uses {{ cssPath }} in <link href="{{ cssPath }}" inline>
baseUrl: BASE_URL,
...locals,
},

View File

@@ -1,68 +1,81 @@
<!DOCTYPE html>
<html lang="en" xmlns="http://www.w3.org/1999/xhtml" xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<meta name="x-apple-disable-message-reformatting" />
<!--[if mso]>
<noscript><xml><o:OfficeDocumentSettings><o:PixelsPerInch>96</o:PixelsPerInch></o:OfficeDocumentSettings></xml></noscript>
<![endif]-->
<title>{{ page.title || 'sexy.pivoine.art' }}</title>
<!doctype html>
<html
lang="en"
xmlns="http://www.w3.org/1999/xhtml"
xmlns:v="urn:schemas-microsoft-com:vml"
xmlns:o="urn:schemas-microsoft-com:office:office"
>
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<meta name="x-apple-disable-message-reformatting" />
<!--[if mso]>
<noscript
><xml
><o:OfficeDocumentSettings
><o:PixelsPerInch>96</o:PixelsPerInch></o:OfficeDocumentSettings
></xml
></noscript
>
<![endif]-->
<title>{{ page.title || 'sexy.pivoine.art' }}</title>
<!-- Noto Sans — progressive enhancement for clients that support web fonts -->
<style plain>
@import url('https://fonts.googleapis.com/css2?family=Noto+Sans:wght@400;600;700&display=swap');
</style>
<!-- Noto Sans — progressive enhancement for clients that support web fonts -->
<style plain>
@import url("https://fonts.googleapis.com/css2?family=Noto+Sans:wght@400;600;700&display=swap");
</style>
<!-- Design tokens + Tailwind preset — path resolved by render.ts -->
<link rel="stylesheet" href="{{ cssPath }}" inline>
</head>
<body class="bg-background m-0 p-0 font-sans">
<!-- Design tokens + Tailwind preset — path resolved by render.ts -->
<link rel="stylesheet" href="{{ cssPath }}" inline />
</head>
<body class="bg-background m-0 p-0 font-sans">
<!-- Preview text (hidden) -->
<if condition="page.previewText || previewText">
<div class="hidden max-h-0 overflow-hidden">
{{ page.previewText || previewText }}
&nbsp;&zwnj;&nbsp;&zwnj;&nbsp;&zwnj;&nbsp;&zwnj;&nbsp;&zwnj;&nbsp;&zwnj;
</div>
</if>
<!-- Preview text (hidden) -->
<if condition="page.previewText || previewText">
<div class="hidden max-h-0 overflow-hidden">
{{ page.previewText || previewText }}
&nbsp;&zwnj;&nbsp;&zwnj;&nbsp;&zwnj;&nbsp;&zwnj;&nbsp;&zwnj;&nbsp;&zwnj;
<div class="py-8 px-4">
<table
class="w-full max-w-[600px] mx-auto"
role="presentation"
cellpadding="0"
cellspacing="0"
border="0"
>
<!-- Brand header — uses --foreground as dark bg -->
<tr>
<td class="bg-foreground rounded-t-2xl px-8 py-6 text-center">
<a href="{{ baseUrl }}" style="text-decoration: none">
<span class="text-sm font-semibold tracking-[0.22em] uppercase text-background">
sexy<span class="text-primary">.</span>pivoine<span class="text-primary">.</span>art
</span>
</a>
</td>
</tr>
<!-- Card body -->
<tr>
<td class="bg-card px-8 py-10 text-[14px] text-card-foreground leading-relaxed">
<yield />
</td>
</tr>
<!-- Footer -->
<tr>
<td class="bg-muted border-t border-border rounded-b-2xl px-8 py-6 text-center">
<p class="text-[11px] text-muted-foreground m-0">
&copy; {{ new Date().getFullYear() }} sexy.pivoine.art &mdash; For adults only (18+)
</p>
<p class="text-[11px] text-muted-foreground mt-2 mb-0">
If you did not request this email, you can safely ignore it.
</p>
</td>
</tr>
</table>
</div>
</if>
<div class="py-8 px-4">
<table class="w-full max-w-[600px] mx-auto" role="presentation" cellpadding="0" cellspacing="0" border="0">
<!-- Brand header — uses --foreground as dark bg -->
<tr>
<td class="bg-foreground rounded-t-2xl px-8 py-6 text-center">
<a href="{{ baseUrl }}" style="text-decoration: none">
<span class="text-sm font-semibold tracking-[0.22em] uppercase text-background">
sexy<span class="text-primary">.</span>pivoine<span class="text-primary">.</span>art
</span>
</a>
</td>
</tr>
<!-- Card body -->
<tr>
<td class="bg-card px-8 py-10 text-[14px] text-card-foreground leading-relaxed">
<yield />
</td>
</tr>
<!-- Footer -->
<tr>
<td class="bg-muted border-t border-border rounded-b-2xl px-8 py-6 text-center">
<p class="text-[11px] text-muted-foreground m-0">
&copy; {{ new Date().getFullYear() }} sexy.pivoine.art &mdash; For adults only (18+)
</p>
<p class="text-[11px] text-muted-foreground mt-2 mb-0">
If you did not request this email, you can safely ignore it.
</p>
</td>
</tr>
</table>
</div>
</body>
</body>
</html>

View File

@@ -4,21 +4,21 @@ previewText: "You requested a password reset. Use the link below to set a new on
---
<x-main>
<h1 class="text-[22px] font-semibold text-foreground m-0 mb-2">
Reset your password
</h1>
<h1 class="text-[22px] font-semibold text-foreground m-0 mb-2">Reset your password</h1>
<p class="text-muted-foreground m-0 mb-6">
We received a request to reset the password for your account. Click the button below to choose a new one.
We received a request to reset the password for your account. Click the button below to choose a
new one.
</p>
<!-- CTA button — inline style needed for Outlook -->
<table role="presentation" cellpadding="0" cellspacing="0" border="0" class="mb-6">
<tr>
<td class="rounded-lg" style="background: #b700d9">
<a href="{{ url }}"
class="inline-block px-8 py-[14px] text-[14px] font-semibold text-primary-foreground no-underline rounded-lg"
style="background: #b700d9; color: #faf4fb">
<a
href="{{ url }}"
class="inline-block px-8 py-[14px] text-[14px] font-semibold text-primary-foreground no-underline rounded-lg"
style="background: #b700d9; color: #faf4fb"
>
Reset my password
</a>
</td>
@@ -26,8 +26,8 @@ previewText: "You requested a password reset. Use the link below to set a new on
</table>
<p class="text-[13px] text-muted-foreground m-0 mb-6">
This link expires in <strong class="text-foreground">1 hour</strong>.
If you did not request a password reset, no action is needed — your account remains secure.
This link expires in <strong class="text-foreground">1 hour</strong>. If you did not request a
password reset, no action is needed — your account remains secure.
</p>
<hr class="border-0 border-t border-border my-6" />
@@ -36,9 +36,6 @@ previewText: "You requested a password reset. Use the link below to set a new on
Button not working? Copy and paste this link into your browser:
</p>
<p class="text-[12px] m-0 mt-1">
<a href="{{ url }}" class="text-primary break-all" style="color: #b700d9">
{{ url }}
</a>
<a href="{{ url }}" class="text-primary break-all" style="color: #b700d9"> {{ url }} </a>
</p>
</x-main>

View File

@@ -4,21 +4,21 @@ previewText: "Almost there — confirm your email address to activate your accou
---
<x-main>
<h1 class="text-[22px] font-semibold text-foreground m-0 mb-2">
Verify your email address
</h1>
<h1 class="text-[22px] font-semibold text-foreground m-0 mb-2">Verify your email address</h1>
<p class="text-muted-foreground m-0 mb-6">
Thanks for signing up! Click the button below to confirm your email address and activate your account.
Thanks for signing up! Click the button below to confirm your email address and activate your
account.
</p>
<!-- CTA button — inline style needed for Outlook -->
<table role="presentation" cellpadding="0" cellspacing="0" border="0" class="mb-6">
<tr>
<td class="rounded-lg" style="background: #b700d9">
<a href="{{ url }}"
class="inline-block px-8 py-[14px] text-[14px] font-semibold text-primary-foreground no-underline rounded-lg"
style="background: #b700d9; color: #faf4fb">
<a
href="{{ url }}"
class="inline-block px-8 py-[14px] text-[14px] font-semibold text-primary-foreground no-underline rounded-lg"
style="background: #b700d9; color: #faf4fb"
>
Verify my email
</a>
</td>
@@ -35,9 +35,6 @@ previewText: "Almost there — confirm your email address to activate your accou
Button not working? Copy and paste this link into your browser:
</p>
<p class="text-[12px] m-0 mt-1">
<a href="{{ url }}" class="text-primary break-all" style="color: #b700d9">
{{ url }}
</a>
<a href="{{ url }}" class="text-primary break-all" style="color: #b700d9"> {{ url }} </a>
</p>
</x-main>