diff options
Diffstat (limited to 'src/components/widgets')
| -rw-r--r-- | src/components/widgets/ContactHeader.astro | 73 | ||||
| -rw-r--r-- | src/components/widgets/Map.astro | 88 |
2 files changed, 147 insertions, 14 deletions
diff --git a/src/components/widgets/ContactHeader.astro b/src/components/widgets/ContactHeader.astro new file mode 100644 index 0000000..e3433b1 --- /dev/null +++ b/src/components/widgets/ContactHeader.astro @@ -0,0 +1,73 @@ +--- +// ContactHeader - A simple header component with phone number and social media links +// This is different from the main navigation Header component +import { Icon } from 'astro-icon/components'; +import { SITE } from 'astrowind:config'; + +interface Link { + text?: string; + href?: string; + ariaLabel?: string; + icon?: string; +} + +interface Links { + text?: string; + href?: string; + links?: Array<Link>; +} + +export interface ContactHeaderProps { + links?: Array<Links>; + actions?: Array<Link>; + isSticky?: boolean; + showRssFeed?: boolean; + showToggleTheme?: boolean; + position?: string; +} + +const { isSticky = false } = Astro.props; +--- + +<header + id="header" + class="bg-black text-white py-2 px-4 relative z-50" + {...isSticky ? { 'data-aw-sticky-header': '' } : {}} +> + <div class="max-w-7xl mx-auto flex items-center justify-between"> + <div class="flex items-center space-x-2"> + <Icon name="tabler:phone" class="w-4 h-4" /> + <a href="tel:+48790209770" class="text-sm font-medium hover:text-gray-300 transition-colors cursor-pointer"> + +48 790-209-770 + </a> + </div> + { + SITE.social && (SITE.social.facebook || SITE.social.instagram) && ( + <div class="flex items-center space-x-3"> + {SITE.social.facebook && ( + <a + href={SITE.social.facebook} + aria-label="Facebook" + class="text-white hover:text-gray-300 transition-colors cursor-pointer" + target="_blank" + rel="noopener noreferrer" + > + <Icon name="tabler:brand-facebook" class="w-4 h-4" /> + </a> + )} + {SITE.social.instagram && ( + <a + href={SITE.social.instagram} + aria-label="Instagram" + class="text-white hover:text-gray-300 transition-colors cursor-pointer" + target="_blank" + rel="noopener noreferrer" + > + <Icon name="tabler:brand-instagram" class="w-4 h-4" /> + </a> + )} + </div> + ) + } + </div> +</header> diff --git a/src/components/widgets/Map.astro b/src/components/widgets/Map.astro index 76d81a4..ec36669 100644 --- a/src/components/widgets/Map.astro +++ b/src/components/widgets/Map.astro @@ -24,8 +24,8 @@ const coordinates = { lon: lon, }; -// Create map URL with proper coordinates -const mapUrl = `https://www.openstreetmap.org/export/embed.html?bbox=${coordinates.lon - 0.01},${coordinates.lat - 0.01},${coordinates.lon + 0.01},${coordinates.lat + 0.01}&layer=mapnik&marker=${coordinates.lat},${coordinates.lon}`; +// Create map URL with proper coordinates and disabled scroll wheel zoom +const mapUrl = `https://www.openstreetmap.org/export/embed.html?bbox=${coordinates.lon - 0.01},${coordinates.lat - 0.01},${coordinates.lon + 0.01},${coordinates.lat + 0.01}&layer=mapnik&marker=${coordinates.lat},${coordinates.lon}&scrollWheelZoom=false`; --- <WidgetWrapper id={id} isDark={isDark} containerClass={`max-w-7xl mx-auto ${classes?.container ?? ''}`} bg={bg}> @@ -33,18 +33,78 @@ const mapUrl = `https://www.openstreetmap.org/export/embed.html?bbox=${coordinat <div class="mx-auto max-w-7xl p-4 md:px-8"> <div class="relative overflow-hidden rounded-lg shadow-xl dark:shadow-none dark:border dark:border-slate-600"> - <iframe - width="100%" - height={height} - frameborder="0" - scrolling="no" - marginheight="0" - marginwidth="0" - src={mapUrl} - title="Mapa lokalizacji CustomWorks" - class="w-full" - > - </iframe> + <div class="relative" id="map-container"> + <iframe + width="100%" + height={height} + frameborder="0" + scrolling="no" + marginheight="0" + marginwidth="0" + src={mapUrl} + title="Mapa lokalizacji CustomWorks" + class="w-full" + id="map-iframe" + > + </iframe> + <script> + // Disable scroll wheel zoom on the map iframe + document.addEventListener('DOMContentLoaded', function () { + const mapContainer = document.getElementById('map-container'); + const mapIframe = document.getElementById('map-iframe'); + + if (mapContainer && mapIframe) { + // Prevent scroll wheel events from reaching the iframe + mapContainer.addEventListener( + 'wheel', + function (e) { + e.preventDefault(); + e.stopPropagation(); + }, + { passive: false } + ); + + // Also prevent touch events that might cause zoom + mapContainer.addEventListener( + 'touchstart', + function (e) { + // Only prevent if it's a pinch gesture (multiple touches) + if (e.touches.length > 1) { + e.preventDefault(); + e.stopPropagation(); + } + }, + { passive: false } + ); + + // Prevent pinch zoom + mapContainer.addEventListener( + 'gesturestart', + function (e) { + e.preventDefault(); + }, + { passive: false } + ); + + mapContainer.addEventListener( + 'gesturechange', + function (e) { + e.preventDefault(); + }, + { passive: false } + ); + + mapContainer.addEventListener( + 'gestureend', + function (e) { + e.preventDefault(); + }, + { passive: false } + ); + } + }); + </script> + </div> <div class="absolute bottom-4 right-4"> <a href={`https://www.openstreetmap.org/search?query=${encodeURIComponent(location)}`} |
