Files
Tiber365/dist/pages/contact.astro.mjs
becarta 3168826fa8 Add internationalization support with astro-i18next integration
- Implemented astro-i18next for multi-language support, including English, Dutch, and Italian.
- Configured default locale and language fallback settings.
- Defined routes for localized content in the configuration.
- Updated package.json and package-lock.json to include new dependencies for i18next and related plugins.
2025-05-23 15:10:00 +02:00

34 lines
7.5 KiB
JavaScript

import '../chunks/page-ssr_ChKiSmuh.mjs';
import { c as createComponent, m as maybeRenderHead, a as renderTemplate, r as renderComponent } from '../chunks/astro/server_DJC9Xx9K.mjs';
import 'kleur/colors';
import { t, $ as $$BaseLayout, a as $$Header, b as $$Footer } from '../chunks/Footer_BFBz0LQo.mjs';
import 'clsx';
export { renderers } from '../renderers.mjs';
const $$ContactForm = createComponent(async ($$result, $$props, $$slots) => {
return renderTemplate`${maybeRenderHead()}<section class="py-20 bg-background"> <div class="container-custom"> <div class="max-w-4xl mx-auto"> <!-- Section header --> <div class="text-center mb-12 animate-on-scroll"> <h2 class="text-3xl sm:text-4xl lg:text-5xl font-display font-bold text-foreground mb-4"> ${t("contact.title")} </h2> <p class="text-lg sm:text-xl text-muted-foreground"> ${t("contact.subtitle")} </p> </div> <div class="grid grid-cols-1 lg:grid-cols-2 gap-12"> <!-- Contact form --> <div class="animate-on-scroll"> <form id="contact-form" class="space-y-6"> <!-- Name field --> <div> <label for="name" class="block text-sm font-medium text-foreground mb-2"> ${t("contact.form.name")} *
</label> <input type="text" id="name" name="name" required class="w-full px-4 py-3 border border-border rounded-lg bg-background text-foreground placeholder-muted-foreground focus:outline-none focus:ring-2 focus:ring-primary focus:border-transparent transition-all" placeholder="John Doe"> </div> <!-- Email field --> <div> <label for="email" class="block text-sm font-medium text-foreground mb-2"> ${t("contact.form.email")} *
</label> <input type="email" id="email" name="email" required class="w-full px-4 py-3 border border-border rounded-lg bg-background text-foreground placeholder-muted-foreground focus:outline-none focus:ring-2 focus:ring-primary focus:border-transparent transition-all" placeholder="john@company.com"> </div> <!-- Company field --> <div> <label for="company" class="block text-sm font-medium text-foreground mb-2"> ${t("contact.form.company")} </label> <input type="text" id="company" name="company" class="w-full px-4 py-3 border border-border rounded-lg bg-background text-foreground placeholder-muted-foreground focus:outline-none focus:ring-2 focus:ring-primary focus:border-transparent transition-all" placeholder="Your Company"> </div> <!-- Service field --> <div> <label for="service" class="block text-sm font-medium text-foreground mb-2"> ${t("contact.form.service")} </label> <select id="service" name="service" class="w-full px-4 py-3 border border-border rounded-lg bg-background text-foreground focus:outline-none focus:ring-2 focus:ring-primary focus:border-transparent transition-all"> <option value="">Select a service</option> <option value="microsoft365">Microsoft 365 Support</option> <option value="management">Full M365 Management</option> <option value="networking">Networking & Infrastructure</option> <option value="hosting">Web Hosting & Management</option> <option value="custom">Custom IT Projects</option> </select> </div> <!-- Message field --> <div> <label for="message" class="block text-sm font-medium text-foreground mb-2"> ${t("contact.form.message")} *
</label> <textarea id="message" name="message" rows="4" required class="w-full px-4 py-3 border border-border rounded-lg bg-background text-foreground placeholder-muted-foreground focus:outline-none focus:ring-2 focus:ring-primary focus:border-transparent transition-all resize-y" placeholder="Tell us about your IT needs..."></textarea> </div> <!-- Submit button --> <button type="submit" class="w-full btn-primary px-6 py-3 text-lg font-semibold rounded-lg transition-all duration-300 hover:scale-105 disabled:opacity-50 disabled:cursor-not-allowed" id="submit-btn"> <span id="submit-text">${t("contact.form.send")}</span> <svg id="submit-spinner" class="hidden inline h-5 w-5 ml-2 animate-spin" fill="none" stroke="currentColor" viewBox="0 0 24 24"> <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M4 4v5h.582m15.356 2A8.001 8.001 0 004.582 9m0 0H9m11 11v-5h-.581m0 0a8.003 8.003 0 01-15.357-2m15.357 2H15"></path> </svg> </button> </form> <!-- Success/Error messages --> <div id="form-message" class="hidden mt-4 p-4 rounded-lg"></div> </div> <!-- Contact info --> <div class="animate-on-scroll" style="animation-delay: 0.2s"> <div class="card p-8"> <h3 class="text-xl font-display font-semibold text-foreground mb-6">
Get in Touch
</h3> <div class="space-y-4"> <!-- Email --> <div class="flex items-center"> <div class="flex-shrink-0 w-10 h-10 bg-primary/10 rounded-lg flex items-center justify-center mr-4"> <svg class="h-5 w-5 text-primary" fill="none" stroke="currentColor" viewBox="0 0 24 24"> <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M3 8l7.89 4.26a2 2 0 002.22 0L21 8M5 19h14a2 2 0 002-2V7a2 2 0 00-2-2H5a2 2 0 00-2 2v10a2 2 0 002 2z"></path> </svg> </div> <div> <div class="text-sm text-muted-foreground">Email</div> <a href="mailto:info@tiber365.it" class="text-foreground hover:text-primary transition-colors"> ${t("contact.info.email")} </a> </div> </div> <!-- Phone --> <div class="flex items-center"> <div class="flex-shrink-0 w-10 h-10 bg-primary/10 rounded-lg flex items-center justify-center mr-4"> <svg class="h-5 w-5 text-primary" fill="none" stroke="currentColor" viewBox="0 0 24 24"> <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M3 5a2 2 0 012-2h3.28a1 1 0 01.948.684l1.498 4.493a1 1 0 01-.502 1.21l-2.257 1.13a11.042 11.042 0 005.516 5.516l1.13-2.257a1 1 0 011.21-.502l4.493 1.498a1 1 0 01.684.949V19a2 2 0 01-2 2h-1C9.716 21 3 14.284 3 6V5z"></path> </svg> </div> <div> <div class="text-sm text-muted-foreground">Phone</div> <a href="tel:+391234567890" class="text-foreground hover:text-primary transition-colors"> ${t("contact.info.phone")} </a> </div> </div> <!-- Location --> <div class="flex items-center"> <div class="flex-shrink-0 w-10 h-10 bg-primary/10 rounded-lg flex items-center justify-center mr-4"> <svg class="h-5 w-5 text-primary" fill="none" stroke="currentColor" viewBox="0 0 24 24"> <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M17.657 16.657L13.414 20.9a1.998 1.998 0 01-2.827 0l-4.244-4.243a8 8 0 1111.314 0z"></path> <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M15 11a3 3 0 11-6 0 3 3 0 016 0z"></path> </svg> </div> <div> <div class="text-sm text-muted-foreground">Location</div> <div class="text-foreground"> ${t("contact.info.address")} </div> </div> </div> </div> </div> </div> </div> </div> </div> </section> `;
}, "/Users/richard/Website Development/tiber365/src/components/ContactForm.astro", void 0);
const $$Contact = createComponent(($$result, $$props, $$slots) => {
return renderTemplate`${renderComponent($$result, "BaseLayout", $$BaseLayout, { "title": `${t("nav.contact")} | ${t("meta.title")}`, "description": "Contact Tiber365 for professional IT services. Get in touch for Microsoft 365 support, networking solutions, and custom IT projects." }, { "default": ($$result2) => renderTemplate` ${renderComponent($$result2, "Header", $$Header, {})} ${maybeRenderHead()}<main> ${renderComponent($$result2, "ContactForm", $$ContactForm, {})} </main> ${renderComponent($$result2, "Footer", $$Footer, {})} ` })}`;
}, "/Users/richard/Website Development/tiber365/src/pages/contact.astro", void 0);
const $$file = "/Users/richard/Website Development/tiber365/src/pages/contact.astro";
const $$url = "/contact";
const _page = /*#__PURE__*/Object.freeze(/*#__PURE__*/Object.defineProperty({
__proto__: null,
default: $$Contact,
file: $$file,
url: $$url
}, Symbol.toStringTag, { value: 'Module' }));
const page = () => _page;
export { page };