Icons
All checks were successful
Build Docker image / build (push) Successful in 1m24s
Build Docker image / verify (push) Successful in 27s
Build Docker image / deploy (push) Successful in 1m12s

This commit is contained in:
Roman Krček
2025-07-18 14:31:49 +02:00
parent 8e41c6d78f
commit e587d1099b
3 changed files with 81 additions and 37 deletions

View File

@@ -1,41 +1,42 @@
<script lang="ts">
import { currentStep } from '$lib/stores.js';
import { currentStep } from '$lib/stores.js';
function startWizard() {
currentStep.set(1); // Move to auth step
}
function startWizard() {
currentStep.set(1); // Move to auth step
}
</script>
<div class="min-h-screen bg-gray-50 flex items-center justify-center p-4">
<div class="container mx-auto max-w-2xl bg-white p-8 rounded-lg shadow-lg text-center">
<div class="mb-8">
<!-- ESN Logo placeholder -->
<div class="mx-auto mb-6 w-24 h-24 bg-blue-600 rounded-full flex items-center justify-center">
<span class="text-white text-2xl font-bold">ESN</span>
</div>
<h1 class="mb-6 text-3xl font-bold text-gray-800">
ESN Card Generator
</h1>
<p class="text-lg text-gray-700 leading-relaxed mb-6">
Transform your Google Sheets into professional ESN membership cards with photos.
Privacy-first: all processing happens in your browser.
</p>
<div class="text-sm text-gray-500 mb-8">
<p class="mb-2">✓ Import data from Google Sheets</p>
<p class="mb-2">Automatic face detection and cropping</p>
<p class="mb-2">Generate text and photo PDFs</p>
<p>✓ No data stored on our servers</p>
</div>
</div>
<button
on:click={startWizard}
class="bg-blue-600 text-white px-8 py-3 rounded-lg font-semibold hover:bg-blue-700 transition-colors"
>
Start Creating Cards
</button>
</div>
<div class="container mx-auto max-w-4xl p-2">
<div class="container mx-auto max-w-4xl rounded-lg bg-white p-8 text-center shadow-lg">
<div class="mb-8">
<!-- ESN Logo placeholder -->
<div class="mx-auto mb-6 flex h-48 w-48 items-center justify-center rounded-full bg-gray-400 p-6">
<img src="/favicon.svg" alt="ESN Logo" class="h-32 w-32" />
</div>
<h1 class="mb-6 text-3xl font-bold text-gray-800">ESNcard Generator</h1>
<p class="mb-4 text-lg leading-relaxed text-gray-700">
Transform your Google Sheets into professional ESN membership cards with photos.
</p>
<p class="mb-6 text-lg leading-relaxed text-gray-700">
Privacy-first: all processing happens in your browser.
</p>
<div class="mb-8 text-sm text-gray-500">
<p class="mb-2">Import data from Google Sheets</p>
<p class="mb-2">Automatic face detection and cropping</p>
<p class="mb-2">✓ Generate text and photo PDFs</p>
<p>✓ No data stored on our servers</p>
</div>
</div>
<button
on:click={startWizard}
class="rounded-lg bg-blue-600 px-8 py-3 font-semibold text-white transition-colors hover:bg-blue-700"
>
Start Creating Cards
</button>
</div>
</div>

BIN
static/favicon.ico Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 159 KiB

View File

@@ -1 +1,44 @@
<svg xmlns="http://www.w3.org/2000/svg" width="107" height="128" viewBox="0 0 107 128"><title>svelte-logo</title><path d="M94.157 22.819c-10.4-14.885-30.94-19.297-45.792-9.835L22.282 29.608A29.92 29.92 0 0 0 8.764 49.65a31.5 31.5 0 0 0 3.108 20.231 30 30 0 0 0-4.477 11.183 31.9 31.9 0 0 0 5.448 24.116c10.402 14.887 30.942 19.297 45.791 9.835l26.083-16.624A29.92 29.92 0 0 0 98.235 78.35a31.53 31.53 0 0 0-3.105-20.232 30 30 0 0 0 4.474-11.182 31.88 31.88 0 0 0-5.447-24.116" style="fill:#ff3e00"/><path d="M45.817 106.582a20.72 20.72 0 0 1-22.237-8.243 19.17 19.17 0 0 1-3.277-14.503 18 18 0 0 1 .624-2.435l.49-1.498 1.337.981a33.6 33.6 0 0 0 10.203 5.098l.97.294-.09.968a5.85 5.85 0 0 0 1.052 3.878 6.24 6.24 0 0 0 6.695 2.485 5.8 5.8 0 0 0 1.603-.704L69.27 76.28a5.43 5.43 0 0 0 2.45-3.631 5.8 5.8 0 0 0-.987-4.371 6.24 6.24 0 0 0-6.698-2.487 5.7 5.7 0 0 0-1.6.704l-9.953 6.345a19 19 0 0 1-5.296 2.326 20.72 20.72 0 0 1-22.237-8.243 19.17 19.17 0 0 1-3.277-14.502 17.99 17.99 0 0 1 8.13-12.052l26.081-16.623a19 19 0 0 1 5.3-2.329 20.72 20.72 0 0 1 22.237 8.243 19.17 19.17 0 0 1 3.277 14.503 18 18 0 0 1-.624 2.435l-.49 1.498-1.337-.98a33.6 33.6 0 0 0-10.203-5.1l-.97-.294.09-.968a5.86 5.86 0 0 0-1.052-3.878 6.24 6.24 0 0 0-6.696-2.485 5.8 5.8 0 0 0-1.602.704L37.73 51.72a5.42 5.42 0 0 0-2.449 3.63 5.79 5.79 0 0 0 .986 4.372 6.24 6.24 0 0 0 6.698 2.486 5.8 5.8 0 0 0 1.602-.704l9.952-6.342a19 19 0 0 1 5.295-2.328 20.72 20.72 0 0 1 22.237 8.242 19.17 19.17 0 0 1 3.277 14.503 18 18 0 0 1-8.13 12.053l-26.081 16.622a19 19 0 0 1-5.3 2.328" style="fill:#fff"/></svg>
<!-- Simple ESN-style card icon no outline, larger photo box -->
<svg
xmlns="http://www.w3.org/2000/svg"
width="200"
height="120"
viewBox="0 0 200 120"
stroke-width="1"
stroke-linecap="round"
>
<!-- Rounded-rectangle clip path (matches card shape) -->
<defs>
<clipPath id="cardClip">
<rect x="0" y="0" width="200" height="120" rx="12" ry="12"/>
</clipPath>
</defs>
<!-- Everything is clipped to the card -->
<g clip-path="url(#cardClip)">
<!-- Card background -->
<rect x="0" y="0" width="200" height="120" rx="12" ry="12" fill="#ffffff"/>
<!-- Blue side strip -->
<rect x="0" y="0" width="40" height="120" fill="#0077c8"/>
<!-- Larger photo placeholder -->
<rect
x="14" y="18"
width="60" height="80"
rx="6" ry="6"
fill="#ffffff"
stroke="#bdbdbd"
/>
<!-- Four text bars (no stroke) -->
<rect x="78" y="24" width="104" height="8" rx="4" ry="4" fill="#e8f0fe"/>
<rect x="78" y="44" width="104" height="8" rx="4" ry="4" fill="#e8f0fe"/>
<rect x="78" y="64" width="104" height="8" rx="4" ry="4" fill="#e8f0fe"/>
<rect x="78" y="84" width="104" height="8" rx="4" ry="4" fill="#e8f0fe"/>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 1.5 KiB

After

Width:  |  Height:  |  Size: 1.2 KiB