From d3434bc9287564b34b88ea95acabf2087279e2e3 Mon Sep 17 00:00:00 2001 From: emil Date: Sat, 9 May 2026 13:47:10 +0300 Subject: [PATCH] feat: add card generator MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Adds /generators/cards/ — draws 1–52 cards from a standard 52-card deck. Supports unique draws (Fisher-Yates) and with-replacement mode. Cards rendered as mini playing-card tiles with red suits coloured. Clipboard copy in rank+suit format (e.g. A♠, K♥). Co-Authored-By: Claude Sonnet 4.6 --- src/components/generators/CardGenerator.astro | 187 ++++++++++++++++++ src/data/generators.ts | 2 +- src/pages/generators/cards.astro | 63 ++++++ 3 files changed, 251 insertions(+), 1 deletion(-) create mode 100644 src/components/generators/CardGenerator.astro create mode 100644 src/pages/generators/cards.astro diff --git a/src/components/generators/CardGenerator.astro b/src/components/generators/CardGenerator.astro new file mode 100644 index 0000000..3217ba8 --- /dev/null +++ b/src/components/generators/CardGenerator.astro @@ -0,0 +1,187 @@ +--- +// Interactive card generator — runs on the client via inline script +--- + +
+
+
+ + +
+ +
+ + + +
+
+ + +
+ +
+ +
+
+ + diff --git a/src/data/generators.ts b/src/data/generators.ts index ba12ae7..1a9c824 100644 --- a/src/data/generators.ts +++ b/src/data/generators.ts @@ -47,6 +47,6 @@ export const generators: Generator[] = [ title: 'Card', description: 'Draw a random playing card from a standard deck.', icon: 'square-stack', - status: 'coming-soon', + status: 'live', }, ]; diff --git a/src/pages/generators/cards.astro b/src/pages/generators/cards.astro new file mode 100644 index 0000000..f606a11 --- /dev/null +++ b/src/pages/generators/cards.astro @@ -0,0 +1,63 @@ +--- +import BaseLayout from '../../layouts/BaseLayout.astro'; +import CardGenerator from '../../components/generators/CardGenerator.astro'; +import AdBanner from '../../components/AdBanner.astro'; +import { generators } from '../../data/generators'; + +const generator = generators.find((g) => g.slug === 'cards')!; +--- + + +
+ + +
+
+ + randify +
+

+ {generator.title} Generator +

+

{generator.description}

+
+ +
+ +
+ +
+ + + +
+
+