+ {description} +
+ )} + {subtitle && ( ++ {subtitle} +
+ )} ++ {item.description} +
++ {content.proficiencies.philosophy.description} ++
+ {item.text} +
+- {content.header.description} -
-{content.header.description}
+{content.intro}
diff --git a/src/components/Forms/Contact/README.md b/src/components/Pages/Contact/README.md similarity index 100% rename from src/components/Forms/Contact/README.md rename to src/components/Pages/Contact/README.md diff --git a/src/components/Forms/Contact/client/@types/index.ts b/src/components/Pages/Contact/client/@types/index.ts similarity index 100% rename from src/components/Forms/Contact/client/@types/index.ts rename to src/components/Pages/Contact/client/@types/index.ts diff --git a/src/components/Pages/Contact/client/__fixtures__/contactForm.fixture.astro b/src/components/Pages/Contact/client/__fixtures__/contactForm.fixture.astro new file mode 100644 index 000000000..689d7921c --- /dev/null +++ b/src/components/Pages/Contact/client/__fixtures__/contactForm.fixture.astro @@ -0,0 +1,85 @@ +--- +import ContactFormComponent from '../../index.astro' +import type { Props as ContactPageProps } from '../../index.astro' + +const content = { + header: { + title: 'Contact', + description: 'Get in touch', + }, + contact: { + header: 'Contact Details', + details: [ + { + text: 'Email', + value: 'test@example.com', + icon: 'email', + }, + ], + expertise: { + header: 'Expertise', + areas: [{ text: 'Platform Engineering' }], + }, + chooseUs: { + header: 'Why Us', + areas: [{ text: 'Fast response' }], + }, + }, + form: { + header: 'Send a message', + description: 'Tell us about your project', + formErrorMssg: 'Please fix form errors.', + contact: { + header: 'Your Contact Info', + company: 'Company', + companyPlaceholder: 'Acme Inc', + email: 'Email', + emailPlaceholder: 'you@example.com', + fullName: 'Full Name', + fullNamePlaceholder: 'Jane Doe', + phone: 'Phone', + phonePlaceholder: '+1 555 555 5555', + }, + project: { + header: 'Project Details', + budget: 'Budget', + budgetOptions: [ + { text: 'Select budget', value: '' }, + { text: '$5,000 - $10,000', value: '5k-10k' }, + ], + budgetPlaceholder: 'Budget', + description: 'Description', + descriptionPlaceholder: 'Project details', + timeline: 'Timeline', + timelineOptions: [ + { text: 'Select timeline', value: '' }, + { text: 'Within 1 month', value: 'within-1-month' }, + ], + timelinePlaceholder: 'Timeline', + type: 'Project Type', + typeOptions: [ + { text: 'Select type', value: '' }, + { text: 'Infrastructure', value: 'infrastructure' }, + ], + typePlaceholder: 'Project Type', + }, + files: { + header: 'Attachments', + subheader: 'Optional uploads', + supportedFormats: 'PDF, DOCX', + maxFileSizeText: 'Max file size:', + maxFileSize: '10MB', + maxFilesText: 'Max files:', + maxFiles: '3', + }, + info: [{ lead: 'Note', text: 'We reply quickly.' }], + submitButtonText: 'Send', + waitingText: 'Sending...', + successText: 'Sent successfully.', + errorText: 'Submission failed.', + errorEmail: 'Please provide a valid email.', + }, +} satisfies ContactPageProps['content'] +--- + +- {content.header.description} -
-- We'll get back to you within 24 hours with a detailed proposal. -
-{content.form.description}
+- {content.header.description} + {download.data.description}
- {content.header.description} -
-+ {content.intro.detail} +
+{item.lead}
+{item.text}
++ {content.intro.close.lead} + {content.intro.close.text} +
++ {content.topics.detail} +
+{item.text}
+{content.preview.detail}
++ ## + {` Deep Dive: The Kubernetes DNS Bug That Wasted 40 Hours`} +
++ How the default ndots:5 setting caused cascading DNS failures under + load, the misleading metrics that sent us down the wrong path, and the + two-line fix that resolved it. +
+ ++ ## + {` Quick Wins`} +
+- Terraform state backup one-liner before every apply
+- PromQL query to find unused Grafana dashboards
+- Pre-commit hook for secrets scanning in monorepos
++ ## + {` What We're Reading`} +
+- Cloudflare's routing incident post-mortem
+- OpenTelemetry's new tail-sampling processor
+- Google SRE on SLO-based alerting
++ ## + {` Try This Month`} +
++ Check your CoreDNS cache hit rate. Below 80%? You're hammering upstream + resolvers unnecessarily. +
+ ++ $ 5 min read · unsubscribe anytime +
+- Sorry, the page you are looking for doesn't exist or has been moved. -
-{content.message}
-- {contactData.company.description} -
-+ {contactData.company.description} +
+