diff --git a/.env.example b/.env.example index 7bad6c7..d85c86d 100644 --- a/.env.example +++ b/.env.example @@ -1,11 +1,16 @@ # Public URL of the website PUBLIC_SITE_URL=https://www.fuz.dariuszm.eu - -# Google Maps -PUBLIC_GOOGLE_MAPS_KEY= +PUBLIC_GOOGLE_MAPS_KEY=AIzaSyDbUU6gvHCQilHyBEWL31FIM4D9-HuvgQw +PUBLIC_RECAPTCHA_SITE_KEY=6Ld0ixIsAAAAAJdeOdzRy0Wd1TR-Xg6n7GMFxe4x # Contact form API FORMS_ENDPOINT=TEST # Astro SSR NODE_ENV=production + +# Smtp +SMTP_HOST=smtp.webio.pl +SMTP_PORT=465 +SMTP_USER=admin@fuz.hostingasp.pl +SMTP_PASS=Janeczek@12 \ No newline at end of file diff --git a/src/components/layout/Header.astro b/src/components/layout/Header.astro index ae18767..7161ced 100644 --- a/src/components/layout/Header.astro +++ b/src/components/layout/Header.astro @@ -8,7 +8,7 @@ const links = [ { name: "INTERNET RADIOWY", href: "/internet-radiowy" }, { name: "TELEFON", href: "/telefon" }, { name: "ZASIĘG SIECI", href: "/mapa-zasiegu" }, - { name: "KONTAKT", href: "/kontakt" } + { name: "KONTAKT", href: "/#contact" } ]; --- diff --git a/src/components/maps/MapGoogle.astro b/src/components/maps/MapGoogle.astro new file mode 100644 index 0000000..eaed2ec --- /dev/null +++ b/src/components/maps/MapGoogle.astro @@ -0,0 +1,79 @@ +--- +const { + apiKey, + lat, + lon, + zoom = 15, + title = "", + description = "", +} = Astro.props; +import "../../styles/map-google.css"; +--- + +
+
+
+
+ + + + diff --git a/src/components/sections/SectionContact.astro b/src/components/sections/SectionContact.astro new file mode 100644 index 0000000..d9b255f --- /dev/null +++ b/src/components/sections/SectionContact.astro @@ -0,0 +1,173 @@ +--- +import yaml from "js-yaml"; +import fs from "fs"; +import MapGoogle from "../maps/MapGoogle.astro"; +import "../../styles/contact.css"; + +const data = yaml.load( + fs.readFileSync("./src/content/contact/contact.yaml", "utf8"), +); +const apiKey = import.meta.env.PUBLIC_GOOGLE_MAPS_KEY; +--- + +
+ +
+ +
+

{data.title}

+
+
+ + +
+

{data.contactFormTitle}

+ +
+
+ + +
+ +
+ + +
+ + + + + + + + +
+
+
+ + + + + +
+ + + + + + diff --git a/src/content/contact/contact.yaml b/src/content/contact/contact.yaml new file mode 100644 index 0000000..d4ea442 --- /dev/null +++ b/src/content/contact/contact.yaml @@ -0,0 +1,19 @@ +title: SKONTAKTUJ SIĘ Z NAMI +description: | +

FUZ ADAM ROJEK

+

ul. Świętojańska 46 07-200 Wyszków

+

✆ +48 606 369 650

+

☏ (29) 643 80 55

+

✉ biuro@fuz.pl

+ +

+ Zapraszamy do naszego biura ! Na miejscu udzielimy niezbędnych informacji oraz pomożemy Ci wybrać ofertę najlepiej dopasowaną do Twoich potrzeb i możliwości. W przypadku jakichkolwiek wątpliwości służymy pomocą i rzetelną informacją. + Możesz skontaktować się z nami również telefonicznie czy mailowo - odpowiemy najszybciej jak to możliwe. + Biuro jest czynne od poniedziałku do piątku w godzinach 9:00-17:00 +

+ +lat: 52.597388 +lng: 21.456797 +markerTitle: "FUZ Adam Rojek" +markerAddress: ul. Świętojańska 46
07-200 Wyszków +contactFormTitle: Pisząc wiadomość ... diff --git a/src/pages/index.astro b/src/pages/index.astro index 7939d6e..f41b563 100644 --- a/src/pages/index.astro +++ b/src/pages/index.astro @@ -2,6 +2,7 @@ import DefaultLayout from "../layouts/DefaultLayout.astro"; import Hero from "../components/hero/Hero.astro"; import SectionRenderer from "../components/sections/SectionRenderer.astro" +import SectionContact from "../components/sections/SectionContact.astro"; import yaml from "js-yaml"; import fs from "fs"; @@ -13,4 +14,5 @@ const hero = yaml.load(fs.readFileSync("./src/content/home/hero.yaml", "utf8")); + diff --git a/src/styles/base.css b/src/styles/base.css index dffbbb5..aca3697 100644 --- a/src/styles/base.css +++ b/src/styles/base.css @@ -4,4 +4,8 @@ @import "./hero.css"; @import "./buttons.css"; @import "./sections.css"; -@import "./markdown.css"; \ No newline at end of file +@import "./markdown.css"; + +.grecaptcha-badge { + display: none !important; +} \ No newline at end of file diff --git a/src/styles/buttons.css b/src/styles/buttons.css index 9bf71c5..b73f6e5 100644 --- a/src/styles/buttons.css +++ b/src/styles/buttons.css @@ -36,3 +36,54 @@ .btn-ghost:hover { background-color: var(--btn-ghost-hover-bg); } + +.fuz-input { + width: 100%; + padding: 0.75rem 1rem; /* bardziej eleganckie */ + border-radius: 0.75rem; + + /* Kolory z theme.css */ + background-color: var(--fuz-bg); + color: var(--fuz-text); + border: 1px solid var(--fuz-border, #d1d5db); /* fallback dla bezpieczeństwa */ + + box-shadow: 0 1px 2px rgba(0,0,0,0.06); + + transition: all 0.2s ease; +} + +/* Hover odcien zależny od border, nie od Tailwind */ +.fuz-input:hover { + border-color: var(--fuz-text); + opacity: 0.9; +} + +/* Placeholder — używa fuz-text ale jaśniejszy */ +.fuz-input::placeholder { + color: color-mix(in srgb, var(--fuz-text) 40%, transparent); +} + +/* Focus — używa accent */ +.fuz-input:focus { + outline: none; + border-color: var(--fuz-accent); + box-shadow: 0 0 0 3px color-mix(in srgb, var(--fuz-accent) 40%, transparent); +} + +/* Error */ +.fuz-input-error { + border-color: #ff4d4f !important; + box-shadow: 0 0 0 3px rgba(255, 77, 79, 0.3) !important; +} + +/* Disabled */ +.fuz-input:disabled { + opacity: 0.6; + cursor: not-allowed; + background-color: color-mix(in srgb, var(--fuz-bg) 80%, #888); +} + +/* Textarea */ +textarea.fuz-input { + resize: none; +} diff --git a/src/styles/contact.css b/src/styles/contact.css new file mode 100644 index 0000000..0f2fe94 --- /dev/null +++ b/src/styles/contact.css @@ -0,0 +1,55 @@ +.fuz-contact-grid { + @apply grid md:grid-cols-2 gap-10 items-start max-w-7xl mx-auto; +} + +.fuz-contact-box { + + background-color: var(--fuz-bg); + color: var(--fuz-text); +} + +.fuz-contact-description h3 { + @apply text-xl font-semibold mb-2; + color: var(--fuz-text); +} + +.fuz-contact-description h4 { + @apply text-xl font-semibold mb-1; + color: var(--fuz-text); +} + +.fuz-contact-description p { + @apply text-xl mt-4; + color: var(--fuz-text); +} + +.fuz-contact-form { + @apply space-y-2; +} + +/* --- RODO --- */ +.fuz-rodo { + @apply flex items-start gap-3 text-sm; + color: var(--fuz-text); +} + +/* --- TOAST --- */ + +.fuz-toast { + @apply fixed top-5 right-5 z-[9999]; +} + +.fuz-toast-msg { + @apply px-5 py-3 rounded-xl shadow-lg; + color: var(--fuz-accent-text); +} + +/* SUKCES = accent */ +.fuz-toast-msg.success { + background-color: var(--fuz-accent); +} + +/* ERROR — czerwony zostaje, bo to wyjątek */ +.fuz-toast-msg.error { + background-color: #ff4d4f; +} diff --git a/src/styles/map-google.css b/src/styles/map-google.css new file mode 100644 index 0000000..413b75a --- /dev/null +++ b/src/styles/map-google.css @@ -0,0 +1,55 @@ +.fuz-map-wrapper { + @apply max-w-7xl mx-auto mt-16; +} + +.fuz-map-container { + @apply w-full h-[400px] rounded-xl shadow-lg; +} + +.fuz-map-google { + @apply w-full h-[450px] rounded-xl overflow-hidden relative; + background: linear-gradient(90deg, #e0e0e0 0px, #f5f5f5 40px, #e0e0e0 80px); + background-size: 200% 100%; + animation: mapSkeleton 1.5s infinite; + opacity: 0; + transition: opacity 0.6s ease; +} + +@keyframes mapSkeleton { + from { + background-position: 200% 0; + } + + to { + background-position: -200% 0; + } +} + +.fuz-map-google.loaded { + animation: none; + background: transparent; + opacity: 1; +} + +@media (max-width: 768px) { + .fuz-map-google { + @apply h-[300px]; + } +} + +.fuz-map-infowindow { + /* background: var(--fuz-bg); */ + color: var(--fuz-text); + @apply ml-1 mr-6 text-lg leading-snug ; + border-radius: 10px; +} + +.gm-style-iw-d { + padding-top: 2px !important; + padding-bottom: 6px !important; +} + +.gm-style-iw-c { + padding-top: 2px !important; + padding-bottom: 2px !important; +} \ No newline at end of file