mirror of
https://github.com/snapotter-hq/SnapOtter.git
synced 2026-08-03 07:46:42 +02:00
Draw, type, or upload a signature and place resizable/rotatable copies across PDF pages; output flattened server-side with PyMuPDF. Visual electronic signature, not cryptographic. New interactive-sign display mode (pdf.js + Konva) and a custom docs-pool route.
52 lines
1.3 KiB
Plaintext
52 lines
1.3 KiB
Plaintext
---
|
|
import { formatCompact, getImagePulls, getStarCount } from "@/lib/stats";
|
|
|
|
// Fetched at build time; refreshed by the scheduled landing rebuild.
|
|
const starCount = await getStarCount();
|
|
const { display: pullsDisplay } = await getImagePulls();
|
|
|
|
const stats = [
|
|
{
|
|
value: "241",
|
|
label: "Processing Tools",
|
|
sublabel: "Across 5 file modalities",
|
|
},
|
|
{
|
|
value: formatCompact(starCount),
|
|
label: "GitHub Stars",
|
|
sublabel: "Open-source & growing",
|
|
},
|
|
{
|
|
value: pullsDisplay,
|
|
label: "Image Pulls",
|
|
sublabel: "Deployed worldwide",
|
|
},
|
|
{
|
|
value: "20+",
|
|
label: "Languages",
|
|
sublabel: "Speaks your language",
|
|
},
|
|
];
|
|
---
|
|
|
|
<div class="relative mx-auto mt-10 max-w-5xl border-t border-border/70 pt-10">
|
|
|
|
<!-- Stats grid -->
|
|
<div class="reveal grid grid-cols-2 gap-10 sm:gap-12 lg:grid-cols-4">
|
|
{stats.map((stat) => {
|
|
const inner = (
|
|
<div class="text-center">
|
|
<p class="font-display text-5xl font-extrabold tracking-tight text-primary md:text-6xl">
|
|
{stat.value}
|
|
</p>
|
|
<p class="mt-2 text-sm font-semibold text-foreground">{stat.label}</p>
|
|
<p class="mt-0.5 text-xs text-muted">{stat.sublabel}</p>
|
|
</div>
|
|
);
|
|
|
|
return <div class="p-3">{inner}</div>;
|
|
})}
|
|
</div>
|
|
|
|
</div>
|