feat: Wabenhain Honig-Shop Anwendung
Vollstaendige Next.js/Prisma-E-Commerce-Anwendung fuer eine Imkerei: Shop, Warenkorb, Stripe-Checkout, Kundenkonto mit 2FA, Admin-Bereich (Produkte, Ernten, Chargen, Bestellungen, Gutscheine, admin-editierbare Website-Inhalte), i18n (DE/EN), Rate-Limiting/CSP/Audit-Log-Haertung, PostgreSQL- und MySQL-Unterstuetzung ueber austauschbare Prisma- Treiber-Adapter, Unit-/Komponenten-/E2E-Tests.
This commit is contained in:
1 parent
5c76fcc266
commit
c7927f2883
240 files changed
+26096
-137
No files matched your search
@@ -0,0 +1,44 @@
|
||||
/**
|
||||
* Gemeinsamer Mengen-Steller (−/Zahl/+), bisher als Inline-Markup nur auf der
|
||||
* Produktdetailseite vorhanden, waehrend Warenkorb-Drawer und Warenkorb-Seite
|
||||
* noch ein natives <select> nutzten — vereinheitlicht das Bedienelement.
|
||||
*/
|
||||
export function QuantityStepper({
|
||||
quantity,
|
||||
onChange,
|
||||
max = 10,
|
||||
size = "md",
|
||||
}: {
|
||||
quantity: number;
|
||||
onChange: (quantity: number) => void;
|
||||
max?: number;
|
||||
size?: "sm" | "md";
|
||||
}) {
|
||||
const buttonSize = size === "sm" ? "w-8 h-8 text-base" : "w-10 h-10 text-lg";
|
||||
|
||||
return (
|
||||
<div className="inline-flex items-stretch border border-ink/20">
|
||||
<button
|
||||
type="button"
|
||||
onClick={() => onChange(Math.max(1, quantity - 1))}
|
||||
disabled={quantity <= 1}
|
||||
aria-label="Menge verringern"
|
||||
className={`${buttonSize} flex items-center justify-center text-ink/70 hover:text-forest disabled:opacity-30 disabled:hover:text-ink/70`}
|
||||
>
|
||||
−
|
||||
</button>
|
||||
<span className="w-8 flex items-center justify-center text-sm" aria-live="polite">
|
||||
{quantity}
|
||||
</span>
|
||||
<button
|
||||
type="button"
|
||||
onClick={() => onChange(Math.min(max, quantity + 1))}
|
||||
disabled={quantity >= max}
|
||||
aria-label="Menge erhöhen"
|
||||
className={`${buttonSize} flex items-center justify-center text-ink/70 hover:text-forest disabled:opacity-30 disabled:hover:text-ink/70`}
|
||||
>
|
||||
+
|
||||
</button>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
Reference in new issue
Block a user