Overview
This component is built with Astro and creates an engaging contact section with a form, social media links, and descriptive text. All elements animate into view with different effects.Source Location
Props
This component does not accept any props. All content is hardcoded within the component.Usage
Basic Usage
Features
Two-Column Layout
- Left column: Badge, title, description, and social links
- Right column: Contact form with name, email, and message fields
Animations
Info Section (0.2s delay):Social Links
Three social media links with SVG icons:- Facebook - Full circle icon
- Instagram - Camera/square icon
- GitHub - Octocat icon
aria-label for accessibility.
Layout Structure
Form Fields
Name Field
Email Field
Message Field
Submit Button
Responsive Behavior
Mobile (< 768px)
- Single column stack
- 2rem gap between sections
- Form width: 100% (max-width: 480px)
Tablet+ (768px+)
- Two columns: 1fr + 1fr
- 5rem gap
- Aligned to start (not center)
Styling Notes
Background Color
- Light mode: Green dark (
var(--color-green-dark)) - Dark mode: Dark gray (
#191919) - All text is white for contrast
Social Links
Size: 2.5rem × 2.5remForm Input Styling
Submit Button
Typography
- Badge:
--font-pop, 0.7rem, uppercase, orange border - Title:
--font-montserrat, 700 weight, 1.75rem → 2.25rem (tablet+), white - Description:
--font-sans, 1rem, white with 75% opacity - Labels:
--font-pop, 0.8rem, 500 weight, white with 80% opacity
Form Configuration
Current form setup:action attribute to point to your form handler endpoint.
Content Structure
Hardcoded Spanish content:- Badge: “Súmate” (Join us)
- Title: “Esto lo construimos entre todos” (We build this together)
- Description: Call to action for participation
- Form labels: Spanish field names
- Submit button: “Quiero ser parte” (I want to be part)
Section Spacing
Textarea Behavior
Dependencies
ScrollAnimation.jsx- Animation wrapper component- Framer Motion (via ScrollAnimation)
- CSS custom properties:
--color-green-dark,--color-orange,--font-montserrat,--font-pop,--font-sans - SVG social icons (inline)
Customization Ideas
To make this component reusable:Form Handling
You’ll need to implement form handling. Options include:- Server endpoint: Update
actionto your API route - Form service: Use services like Formspree, Netlify Forms, etc.
- Client-side JavaScript: Add submit handler with
fetch()
Accessibility
- Proper label-input associations with
forandidattributes requiredattributes on name and email fieldsaria-labelon social links- Semantic HTML structure
- High contrast white-on-dark design
- Focus states on form inputs with orange border
- Keyboard navigable elements