From a0cb04b2c601f2a1e26f6f412b8f24aa3a34e3d7 Mon Sep 17 00:00:00 2001 From: AyrisAI Date: Thu, 20 Aug 2026 23:25:19 +0300 Subject: [PATCH] feat(qr-stands): set qr-4 as exclusive vector stand template --- apps/mobile/assets/qr-1.svg | 1 - apps/mobile/assets/qr-2.svg | 1 - apps/mobile/assets/qr-3.svg | 1 - apps/mobile/assets/qr-4.svg | 71 ++++++++++++++++++ apps/mobile/src/app/menu/qr.tsx | 4 +- apps/web/public/qr-1.svg | 1 - apps/web/public/qr-2.svg | 1 - apps/web/public/qr-3.svg | 1 - apps/web/public/qr-4.svg | 71 ++++++++++++++++++ .../src/components/QrStandGeneratorClient.tsx | 49 +++---------- packages/shared/src/qr-stands.ts | 73 +++++-------------- svg/qr-1.svg | 1 - svg/qr-2.svg | 1 - svg/qr-3.svg | 1 - svg/qr-4.svg | 71 ++++++++++++++++++ 15 files changed, 243 insertions(+), 105 deletions(-) delete mode 100644 apps/mobile/assets/qr-1.svg delete mode 100644 apps/mobile/assets/qr-2.svg delete mode 100644 apps/mobile/assets/qr-3.svg create mode 100644 apps/mobile/assets/qr-4.svg delete mode 100644 apps/web/public/qr-1.svg delete mode 100644 apps/web/public/qr-2.svg delete mode 100644 apps/web/public/qr-3.svg create mode 100644 apps/web/public/qr-4.svg delete mode 100644 svg/qr-1.svg delete mode 100644 svg/qr-2.svg delete mode 100644 svg/qr-3.svg create mode 100644 svg/qr-4.svg diff --git a/apps/mobile/assets/qr-1.svg b/apps/mobile/assets/qr-1.svg deleted file mode 100644 index b492c7d..0000000 --- a/apps/mobile/assets/qr-1.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/apps/mobile/assets/qr-2.svg b/apps/mobile/assets/qr-2.svg deleted file mode 100644 index ae1854c..0000000 --- a/apps/mobile/assets/qr-2.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/apps/mobile/assets/qr-3.svg b/apps/mobile/assets/qr-3.svg deleted file mode 100644 index 1318611..0000000 --- a/apps/mobile/assets/qr-3.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/apps/mobile/assets/qr-4.svg b/apps/mobile/assets/qr-4.svg new file mode 100644 index 0000000..ee581d9 --- /dev/null +++ b/apps/mobile/assets/qr-4.svg @@ -0,0 +1,71 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + QR KOD ALANI + + + + + + + + MASA NO: 01 + + + + Gourmet Bistro + + + + Temassız Dijital Menü + + + + MENÜYÜ GÖRMEK İÇİN OKUTUN + + + + Kameranızı QR Koda Odaklayın + + + + Ücretsiz Wi-Fi: GourmetBistro_Guest + + + Bizi Takip Edin: @GourmetBistro + + + \ No newline at end of file diff --git a/apps/mobile/src/app/menu/qr.tsx b/apps/mobile/src/app/menu/qr.tsx index 527eb2d..e9d786a 100644 --- a/apps/mobile/src/app/menu/qr.tsx +++ b/apps/mobile/src/app/menu/qr.tsx @@ -33,7 +33,7 @@ export default function QrScreen() { const [loading, setLoading] = useState(true); const [error, setError] = useState(null); const [copied, setCopied] = useState(false); - const [selectedKey, setSelectedKey] = useState("urban"); + const [selectedKey, setSelectedKey] = useState("qr-4"); const [categories, setCategories] = useState([]); const [exportingPng, setExportingPng] = useState(false); const [exportingPdf, setExportingPdf] = useState(false); @@ -41,7 +41,7 @@ export default function QrScreen() { // eslint-disable-next-line @typescript-eslint/no-explicit-any const viewShotRef = useRef(null); - const activePreset: QrStandPreset = (QR_STAND_PRESETS[selectedKey] || QR_STAND_PRESETS.urban)!; + const activePreset: QrStandPreset = (QR_STAND_PRESETS[selectedKey] || Object.values(QR_STAND_PRESETS)[0])!; useEffect(() => { (async () => { diff --git a/apps/web/public/qr-1.svg b/apps/web/public/qr-1.svg deleted file mode 100644 index b492c7d..0000000 --- a/apps/web/public/qr-1.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/apps/web/public/qr-2.svg b/apps/web/public/qr-2.svg deleted file mode 100644 index ae1854c..0000000 --- a/apps/web/public/qr-2.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/apps/web/public/qr-3.svg b/apps/web/public/qr-3.svg deleted file mode 100644 index 1318611..0000000 --- a/apps/web/public/qr-3.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/apps/web/public/qr-4.svg b/apps/web/public/qr-4.svg new file mode 100644 index 0000000..ee581d9 --- /dev/null +++ b/apps/web/public/qr-4.svg @@ -0,0 +1,71 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + QR KOD ALANI + + + + + + + + MASA NO: 01 + + + + Gourmet Bistro + + + + Temassız Dijital Menü + + + + MENÜYÜ GÖRMEK İÇİN OKUTUN + + + + Kameranızı QR Koda Odaklayın + + + + Ücretsiz Wi-Fi: GourmetBistro_Guest + + + Bizi Takip Edin: @GourmetBistro + + + \ No newline at end of file diff --git a/apps/web/src/components/QrStandGeneratorClient.tsx b/apps/web/src/components/QrStandGeneratorClient.tsx index b943a10..b98c108 100644 --- a/apps/web/src/components/QrStandGeneratorClient.tsx +++ b/apps/web/src/components/QrStandGeneratorClient.tsx @@ -20,12 +20,12 @@ export function QrStandGeneratorClient({ slug = "kebapci-sinan-3", categoriesList = [], }: QrStandGeneratorClientProps) { - const [selectedKey, setSelectedKey] = useState("urban"); + const [selectedKey, setSelectedKey] = useState("qr-4"); const [downloadingPng, setDownloadingPng] = useState(false); const [downloadingPdf, setDownloadingPdf] = useState(false); const standRef = useRef(null); - const activePreset: QrStandPreset = (QR_STAND_PRESETS[selectedKey] || QR_STAND_PRESETS.urban)!; + const activePreset: QrStandPreset = (QR_STAND_PRESETS[selectedKey] || Object.values(QR_STAND_PRESETS)[0])!; const targetUrl = `https://menul.io/${slug}`; const displayCategories = @@ -208,70 +208,43 @@ export function QrStandGeneratorClient({ {activePreset.svgTemplateUrl ? (
{/* SVG Template Vector Background Graphic */} {activePreset.name} {/* Dynamic Restaurant Logo & Name Header Overlay */} -
+
{logoUrl ? ( {restaurantName} ) : null} {restaurantName}
{/* Dynamic QR Code Canvas Overlay */} -
+
- - {/* Dynamic Categories Overlay */} -
-

- Telefonunuzun kamerasını doğrultun -

-
- {displayCategories.map((cat, idx) => ( -
-
{cat}
- {idx < displayCategories.length - 1 && ( -
- )} -
- ))} -
-
) : (
= { - urban: { - key: "urban", - name: "The Urban Burger QR Stand 1", - categoryName: "Özel Masa Kartı Şablonu 1", - bgGradient: "radial-gradient(circle at 50% 50%, #1c3e2b 0%, #0e2016 100%)", - plaqueBg: "linear-gradient(135deg, #a64d2a 0%, #8e3f20 100%)", - plaqueColor: "#a64d2a", - borderAccent: "rgba(255, 255, 255, 0.15)", - qrBg: "#f8f3eb", - qrColor: "#a64d2a", - logoBorder: "#f5be72", - logoBg: "rgba(166, 77, 42, 0.8)", - accentText: "#f5be72", - headerText: "#ffffff", - subText: "rgba(255, 255, 255, 0.9)", - dividerColor: "rgba(255, 255, 255, 0.25)", - categories: ["BURGERS", "FRIES", "SHAKES", "VEGAN OPTIONS"], - svgTemplateUrl: "/qr-1.svg", - }, - "custom-svg-2": { - key: "custom-svg-2", - name: "Classic Bistro QR Stand 2", - categoryName: "Özel Masa Kartı Şablonu 2", - bgGradient: "radial-gradient(circle at 50% 50%, #18181b 0%, #09090b 100%)", - plaqueBg: "linear-gradient(135deg, #1c1917 0%, #0c0a09 100%)", - plaqueColor: "#1c1917", - borderAccent: "rgba(200, 169, 107, 0.4)", - qrBg: "#faf8f5", - qrColor: "#1c1917", - logoBorder: "#c8a96b", - logoBg: "rgba(28, 25, 23, 0.9)", - accentText: "#c8a96b", - headerText: "#ffffff", - subText: "#d6d3d1", - dividerColor: "rgba(200, 169, 107, 0.3)", - categories: ["BAŞLANGIÇLAR", "ANA YEMEKLER", "TATLILAR", "İÇECEKLER"], - svgTemplateUrl: "/qr-2.svg", - }, - "custom-svg-3": { - key: "custom-svg-3", - name: "Modern Gourmet QR Stand 3", - categoryName: "Özel Masa Kartı Şablonu 3", - bgGradient: "radial-gradient(circle at 50% 50%, #111827 0%, #030712 100%)", - plaqueBg: "linear-gradient(135deg, #1f2937 0%, #111827 100%)", - plaqueColor: "#1f2937", - borderAccent: "rgba(234, 179, 8, 0.4)", + "qr-4": { + key: "qr-4", + name: "Gourmet Gold Luxury Stand", + categoryName: "Özel Masa Kartı Şablonu", + bgGradient: "radial-gradient(circle at 50% 50%, #451A03 0%, #1c0a02 100%)", + plaqueBg: "linear-gradient(135deg, #000000 0%, #111111 100%)", + plaqueColor: "#000000", + borderAccent: "#D4AF37", qrBg: "#ffffff", - qrColor: "#111827", - logoBorder: "#eab308", - logoBg: "rgba(31, 41, 55, 0.9)", - accentText: "#eab308", - headerText: "#ffffff", - subText: "#9ca3af", - dividerColor: "rgba(234, 179, 8, 0.3)", - categories: ["ÇORBALAR", "MEZELER", "IZGARALAR", "KAHVE & TATLILAR"], - svgTemplateUrl: "/qr-3.svg", + qrColor: "#111111", + logoBorder: "#D4AF37", + logoBg: "rgba(0, 0, 0, 0.8)", + accentText: "#FFD700", + headerText: "#FFFFFF", + subText: "#A1A1AA", + dividerColor: "rgba(212, 175, 55, 0.3)", + categories: ["BAŞLANGIÇLAR", "ANA YEMEKLER", "TATLILAR", "İÇECEKLER"], + svgTemplateUrl: "/qr-4.svg", }, }; - diff --git a/svg/qr-1.svg b/svg/qr-1.svg deleted file mode 100644 index b492c7d..0000000 --- a/svg/qr-1.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/svg/qr-2.svg b/svg/qr-2.svg deleted file mode 100644 index ae1854c..0000000 --- a/svg/qr-2.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/svg/qr-3.svg b/svg/qr-3.svg deleted file mode 100644 index 1318611..0000000 --- a/svg/qr-3.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/svg/qr-4.svg b/svg/qr-4.svg new file mode 100644 index 0000000..ee581d9 --- /dev/null +++ b/svg/qr-4.svg @@ -0,0 +1,71 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + QR KOD ALANI + + + + + + + + MASA NO: 01 + + + + Gourmet Bistro + + + + Temassız Dijital Menü + + + + MENÜYÜ GÖRMEK İÇİN OKUTUN + + + + Kameranızı QR Koda Odaklayın + + + + Ücretsiz Wi-Fi: GourmetBistro_Guest + + + Bizi Takip Edin: @GourmetBistro + + + \ No newline at end of file