date = "2023-02-28T18:12:43+01:00"
+++
+I'd love to hear from you. Contact form coming soon!
date = "2023-02-28T18:12:43+01:00"
+++
+Mi piacerebbe sentire da te. Modulo di contatto in arrivo presto!
border-color: var(--border);
}
-.border-green-300 {
- --tw-border-opacity: 1;
- border-color: rgb(134 239 172 / var(--tw-border-opacity, 1));
-}
-
-.border-red-300 {
- --tw-border-opacity: 1;
- border-color: rgb(252 165 165 / var(--tw-border-opacity, 1));
-}
-
.bg-accent {
background-color: var(--accent);
}
background-color: rgb(0 0 0 / 0.5);
}
-.bg-green-100 {
- --tw-bg-opacity: 1;
- background-color: rgb(220 252 231 / var(--tw-bg-opacity, 1));
-}
-
-.bg-red-100 {
- --tw-bg-opacity: 1;
- background-color: rgb(254 226 226 / var(--tw-bg-opacity, 1));
-}
-
.bg-surface {
background-color: var(--surface);
}
color: var(--bg);
}
-.text-green-800 {
- --tw-text-opacity: 1;
- color: rgb(22 101 52 / var(--tw-text-opacity, 1));
-}
-
-.text-red-800 {
- --tw-text-opacity: 1;
- color: rgb(153 27 27 / var(--tw-text-opacity, 1));
-}
-
.text-text {
color: var(--text);
}
--- /dev/null
+document.addEventListener('alpine:init', () => {
+ Alpine.data('contactForm', () => ({
+ formData: {
+ name: '',
+ email: '',
+ message: ''
+ },
+ isSubmitting: false,
+ statusMessage: '',
+ statusClass: '',
+
+ async submitContactForm() {
+ this.isSubmitting = true;
+ this.statusMessage = '';
+ this.statusClass = '';
+
+ try {
+ const response = await fetch('/contact.php', {
+ method: 'POST',
+ headers: {
+ 'Content-Type': 'application/json',
+ },
+ body: JSON.stringify(this.formData)
+ });
+
+ const data = await response.json();
+
+ if (response.ok) {
+ this.statusMessage = 'Message sent successfully!';
+ this.statusClass = 'bg-green-100 text-green-800 border border-green-300';
+ this.formData = { name: '', email: '', message: '' };
+ } else {
+ this.statusMessage = data.error || 'An error occurred. Please try again.';
+ this.statusClass = 'bg-red-100 text-red-800 border border-red-300';
+ }
+ } catch (error) {
+ this.statusMessage = 'An error occurred. Please try again.';
+ this.statusClass = 'bg-red-100 text-red-800 border border-red-300';
+ console.error('Form submission error:', error);
+ } finally {
+ this.isSubmitting = false;
+ }
+ }
+ }));
+});
<!-- Language switcher script -->
{{ $langScript := resources.Get "js/language-switcher.js" | minify }}
<script src="{{ $langScript.RelPermalink }}"></script>
+
+ <!-- Contact form script -->
+ {{ $contactScript := resources.Get "js/contact-form.js" | minify }}
+ <script src="{{ $contactScript.RelPermalink }}"></script>
</body>
</html>
</button>
</form>
-<script>
-document.addEventListener('alpine:init', () => {
- Alpine.data('contactForm', () => ({
- formData: {
- name: '',
- email: '',
- message: ''
- },
- isSubmitting: false,
- statusMessage: '',
- statusClass: '',
-
- async submitContactForm() {
- this.isSubmitting = true;
- this.statusMessage = '';
- this.statusClass = '';
-
- try {
- const response = await fetch('/contact.php', {
- method: 'POST',
- headers: {
- 'Content-Type': 'application/json',
- },
- body: JSON.stringify(this.formData)
- });
-
- const data = await response.json();
-
- if (response.ok) {
- this.statusMessage = '{{ i18n "form_success" | default "Message sent successfully!" }}';
- this.statusClass = 'bg-green-100 text-green-800 border border-green-300';
- this.formData = { name: '', email: '', message: '' };
- } else {
- this.statusMessage = data.error || '{{ i18n "form_error" | default "An error occurred. Please try again." }}';
- this.statusClass = 'bg-red-100 text-red-800 border border-red-300';
- }
- } catch (error) {
- this.statusMessage = '{{ i18n "form_error" | default "An error occurred. Please try again." }}';
- this.statusClass = 'bg-red-100 text-red-800 border border-red-300';
- console.error('Form submission error:', error);
- } finally {
- this.isSubmitting = false;
- }
- }
- }));
-});
-</script>