feat: implement Tabletop QR Stand Generator with high-res PNG and print-ready A5 PDF export
This commit is contained in:
@@ -2,7 +2,9 @@ import { useEffect, useState } from "react";
|
||||
import { router } from "expo-router";
|
||||
import {
|
||||
ActivityIndicator,
|
||||
Alert,
|
||||
Image,
|
||||
Linking,
|
||||
Pressable,
|
||||
ScrollView,
|
||||
Share,
|
||||
@@ -87,6 +89,14 @@ export default function QrScreen() {
|
||||
);
|
||||
}
|
||||
|
||||
function handleOpenStandGenerator() {
|
||||
if (!active?.slug) return;
|
||||
const standUrl = `https://menul.io/qr/${active.slug}`;
|
||||
Linking.openURL(standUrl).catch(() => {
|
||||
Alert.alert("Bilgi", `Stant Jeneratörü adresi: ${standUrl}`);
|
||||
});
|
||||
}
|
||||
|
||||
return (
|
||||
<ScrollView contentContainerStyle={{ flexGrow: 1, backgroundColor: "#FAF8F5", padding: 24, justifyContent: "center" }}>
|
||||
<View style={{ maxWidth: 440, width: "100%", alignSelf: "center", alignItems: "center" }}>
|
||||
@@ -158,6 +168,31 @@ export default function QrScreen() {
|
||||
|
||||
{/* Action Buttons */}
|
||||
<View style={{ width: "100%", gap: 12 }}>
|
||||
{/* Stand Generator PDF / PNG Button */}
|
||||
<Pressable
|
||||
onPress={handleOpenStandGenerator}
|
||||
style={({ pressed }) => ({
|
||||
backgroundColor: "#C8A96B",
|
||||
borderRadius: 14,
|
||||
padding: 16,
|
||||
flexDirection: "row",
|
||||
alignItems: "center",
|
||||
justifyContent: "center",
|
||||
gap: 10,
|
||||
opacity: pressed ? 0.9 : 1,
|
||||
shadowColor: "#C8A96B",
|
||||
shadowOffset: { width: 0, height: 4 },
|
||||
shadowOpacity: 0.2,
|
||||
shadowRadius: 10,
|
||||
elevation: 4,
|
||||
})}
|
||||
>
|
||||
<Ionicons name="color-palette-outline" size={18} color="#FFFFFF" />
|
||||
<Text style={{ color: "#FFFFFF", fontSize: 15, fontWeight: "800" }}>
|
||||
Masa Stant Tasarımları & İndir (PDF / PNG)
|
||||
</Text>
|
||||
</Pressable>
|
||||
|
||||
{/* Share Button */}
|
||||
<Pressable
|
||||
onPress={handleShare}
|
||||
|
||||
Reference in New Issue
Block a user