From 1b4e998cf9cda4a56dac5cad5fb67b144b1680f7 Mon Sep 17 00:00:00 2001 From: DanielS Date: Tue, 23 Jun 2026 23:43:22 +0200 Subject: [PATCH] feat: add admin settings page with toggle switch for demo banner --- shop/app/admin/einstellungen/page.tsx | 33 +++++++++++++++++++++ shop/app/page.tsx | 4 +-- shop/components/ui/switch.tsx | 41 +++++++++++++++++++++++++++ 3 files changed, 76 insertions(+), 2 deletions(-) create mode 100644 shop/app/admin/einstellungen/page.tsx create mode 100644 shop/components/ui/switch.tsx diff --git a/shop/app/admin/einstellungen/page.tsx b/shop/app/admin/einstellungen/page.tsx new file mode 100644 index 0000000..6968009 --- /dev/null +++ b/shop/app/admin/einstellungen/page.tsx @@ -0,0 +1,33 @@ +'use client'; + +import { useState, useEffect } from 'react'; +import { Switch } from '@/components/ui/switch'; + +export default function AdminSettings() { + const [demoActive, setDemoActive] = useState(true); + + useEffect(() => { + const state = localStorage.getItem('demo_banner_disabled') !== 'true'; + setDemoActive(state); + }, []); + + const toggleDemo = (checked: boolean) => { + setDemoActive(checked); + localStorage.setItem('demo_banner_disabled', (!checked).toString()); + // Event feuern, damit andere Tabs/Komponenten sofort updaten + window.dispatchEvent(new Event('storage_demo_changed')); + }; + + return ( +
+

Admin Einstellungen

+
+
+

Demo-Warnmeldungen

+

Schaltet gelbe Banner ein oder aus.

+
+ +
+
+ ); +} diff --git a/shop/app/page.tsx b/shop/app/page.tsx index 46f14d8..de59dd8 100644 --- a/shop/app/page.tsx +++ b/shop/app/page.tsx @@ -7,7 +7,7 @@ export default function Home() { return (
{/* Demo Banner */} -
+
⚠️ Dies ist eine **Demo-Webseite (Dummy-Shop)**. Es werden keine echten Bestellungen verarbeitet oder Zahlungen abgewickelt.
@@ -24,7 +24,7 @@ export default function Home() { CASPOS Lizenz-Management-Server

- POS Software Lizenzen & Add-ons + POS Software Lizenzen & Module

Erwerben und verwalten Sie digitale Lizenzen für CASPOS Kassensysteme. Sofortige Aktivierung und automatische Bereitstellung für Ihre Kunden. diff --git a/shop/components/ui/switch.tsx b/shop/components/ui/switch.tsx new file mode 100644 index 0000000..a334ba8 --- /dev/null +++ b/shop/components/ui/switch.tsx @@ -0,0 +1,41 @@ +"use client"; + +import * as React from "react"; +import { cn } from "@/lib/utils"; + +interface SwitchProps extends React.InputHTMLAttributes { + checked?: boolean; + onCheckedChange?: (checked: boolean) => void; +} + +const Switch = React.forwardRef( + ({ className, checked, onCheckedChange, ...props }, ref) => { + const handleChange = (e: React.ChangeEvent) => { + onCheckedChange?.(e.target.checked); + }; + + return ( +

+ + ); + } +); + +Switch.displayName = "Switch"; + +export { Switch };