Add interactive map to Impressum with configurable coordinates
- Add OpenStreetMap iframe to legal page showing business location - Support ADDRESS_LATITUDE and ADDRESS_LONGITUDE environment variables - Generate dynamic map URLs based on configured coordinates - Include link to full map view - Update legal-config.ts interface to include latitude/longitude - Document new environment variables in README.md - Use Kiel coordinates as default (54.3233, 10.1228)
This commit is contained in:
@@ -73,10 +73,12 @@ MIN_STORNO_TIMESPAN=24
|
|||||||
# Legal Information (Impressum/Datenschutz)
|
# Legal Information (Impressum/Datenschutz)
|
||||||
COMPANY_NAME=Stargirlnails Kiel
|
COMPANY_NAME=Stargirlnails Kiel
|
||||||
OWNER_NAME=Inhaber Name
|
OWNER_NAME=Inhaber Name
|
||||||
ADDRESS_STREET=Musterstraße 123
|
ADDRESS_STREET=Liebigstr. 15
|
||||||
ADDRESS_CITY=Kiel
|
ADDRESS_CITY=Kiel
|
||||||
ADDRESS_POSTAL_CODE=24103
|
ADDRESS_POSTAL_CODE=24145
|
||||||
ADDRESS_COUNTRY=Deutschland
|
ADDRESS_COUNTRY=Deutschland
|
||||||
|
ADDRESS_LATITUDE=54.3233 # Optional: GPS-Koordinaten für Karte
|
||||||
|
ADDRESS_LONGITUDE=10.1228 # Optional: GPS-Koordinaten für Karte
|
||||||
CONTACT_PHONE=+49 431 123456
|
CONTACT_PHONE=+49 431 123456
|
||||||
CONTACT_EMAIL=info@stargirlnails.de
|
CONTACT_EMAIL=info@stargirlnails.de
|
||||||
TAX_ID=12/345/67890 # Optional
|
TAX_ID=12/345/67890 # Optional
|
||||||
|
@@ -251,7 +251,7 @@ function App() {
|
|||||||
<footer className="bg-white border-t border-pink-100 mt-16">
|
<footer className="bg-white border-t border-pink-100 mt-16">
|
||||||
<div className="max-w-7xl mx-auto px-4 sm:px-6 lg:px-8 py-8">
|
<div className="max-w-7xl mx-auto px-4 sm:px-6 lg:px-8 py-8">
|
||||||
<div className="text-center text-gray-600">
|
<div className="text-center text-gray-600">
|
||||||
<p>© 2024 Stargirlnails Kiel. Professional nail care services.</p>
|
<p>© 2025 Stargirlnails Kiel. Professional nail design & care with 🩷 and passion in Kiel 🌇.</p>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</footer>
|
</footer>
|
||||||
|
@@ -1,6 +1,21 @@
|
|||||||
import React, { useState } from "react";
|
import React, { useState } from "react";
|
||||||
import { useQuery } from "@tanstack/react-query";
|
import { useQuery } from "@tanstack/react-query";
|
||||||
|
|
||||||
|
// Helper function to generate map coordinates based on address
|
||||||
|
function generateMapUrl(address: any) {
|
||||||
|
// Use coordinates from config or default to Kiel coordinates
|
||||||
|
const lat = address.latitude || 54.3233;
|
||||||
|
const lon = address.longitude || 10.1228;
|
||||||
|
|
||||||
|
// Generate bounding box around the coordinates (0.05 degrees ≈ 5km radius)
|
||||||
|
const bbox = `${lon - 0.05},${lat - 0.05},${lon + 0.05},${lat + 0.05}`;
|
||||||
|
|
||||||
|
const embedUrl = `https://www.openstreetmap.org/export/embed.html?bbox=${bbox}&layer=mapnik&marker=${lat},${lon}`;
|
||||||
|
const fullUrl = `https://www.openstreetmap.org/?mlat=${lat}&mlon=${lon}#map=16/${lat}/${lon}`;
|
||||||
|
|
||||||
|
return { embedUrl, fullUrl };
|
||||||
|
}
|
||||||
|
|
||||||
export default function LegalPage() {
|
export default function LegalPage() {
|
||||||
const [activeSection, setActiveSection] = useState<"impressum" | "datenschutz">("impressum");
|
const [activeSection, setActiveSection] = useState<"impressum" | "datenschutz">("impressum");
|
||||||
|
|
||||||
@@ -137,6 +152,37 @@ export default function LegalPage() {
|
|||||||
{legalConfig.address.postalCode} {legalConfig.address.city}<br />
|
{legalConfig.address.postalCode} {legalConfig.address.city}<br />
|
||||||
{legalConfig.address.country}
|
{legalConfig.address.country}
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
|
{/* Map */}
|
||||||
|
<div className="mt-4">
|
||||||
|
{(() => {
|
||||||
|
const { embedUrl, fullUrl } = generateMapUrl(legalConfig.address);
|
||||||
|
return (
|
||||||
|
<>
|
||||||
|
<iframe
|
||||||
|
src={embedUrl}
|
||||||
|
width="100%"
|
||||||
|
height="300"
|
||||||
|
style={{ border: 0 }}
|
||||||
|
allowFullScreen
|
||||||
|
loading="lazy"
|
||||||
|
referrerPolicy="no-referrer-when-downgrade"
|
||||||
|
title={`Karte der Umgebung von ${legalConfig.companyName}`}
|
||||||
|
></iframe>
|
||||||
|
<div className="mt-2">
|
||||||
|
<a
|
||||||
|
href={fullUrl}
|
||||||
|
target="_blank"
|
||||||
|
rel="noopener noreferrer"
|
||||||
|
className="text-sm text-blue-600 hover:text-blue-800 underline"
|
||||||
|
>
|
||||||
|
Größere Karte anzeigen
|
||||||
|
</a>
|
||||||
|
</div>
|
||||||
|
</>
|
||||||
|
);
|
||||||
|
})()}
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div>
|
<div>
|
||||||
|
@@ -8,6 +8,8 @@ export interface LegalConfig {
|
|||||||
city: string;
|
city: string;
|
||||||
postalCode: string;
|
postalCode: string;
|
||||||
country: string;
|
country: string;
|
||||||
|
latitude?: number;
|
||||||
|
longitude?: number;
|
||||||
};
|
};
|
||||||
contact: {
|
contact: {
|
||||||
phone: string;
|
phone: string;
|
||||||
@@ -41,10 +43,12 @@ export const defaultLegalConfig: LegalConfig = {
|
|||||||
companyName: process.env.COMPANY_NAME || "Stargirlnails Kiel",
|
companyName: process.env.COMPANY_NAME || "Stargirlnails Kiel",
|
||||||
ownerName: process.env.OWNER_NAME || "Inhaber Name",
|
ownerName: process.env.OWNER_NAME || "Inhaber Name",
|
||||||
address: {
|
address: {
|
||||||
street: process.env.ADDRESS_STREET || "Musterstraße 123",
|
street: process.env.ADDRESS_STREET || "Liebigstr. 15",
|
||||||
city: process.env.ADDRESS_CITY || "Kiel",
|
city: process.env.ADDRESS_CITY || "Kiel",
|
||||||
postalCode: process.env.ADDRESS_POSTAL_CODE || "24103",
|
postalCode: process.env.ADDRESS_POSTAL_CODE || "24145",
|
||||||
country: process.env.ADDRESS_COUNTRY || "Deutschland",
|
country: process.env.ADDRESS_COUNTRY || "Deutschland",
|
||||||
|
latitude: process.env.ADDRESS_LATITUDE ? parseFloat(process.env.ADDRESS_LATITUDE) : 54.3233,
|
||||||
|
longitude: process.env.ADDRESS_LONGITUDE ? parseFloat(process.env.ADDRESS_LONGITUDE) : 10.1228,
|
||||||
},
|
},
|
||||||
contact: {
|
contact: {
|
||||||
phone: process.env.CONTACT_PHONE || "+49 431 123456",
|
phone: process.env.CONTACT_PHONE || "+49 431 123456",
|
||||||
|
Reference in New Issue
Block a user