Overview
The Intro component displays a two-part introduction section:- A full-height black section with the main value proposition
- A light gray section showcasing four key technical expertise areas
Component structure
src/components/Intro.tsx
Features
Two-tone layout
The component uses contrasting color schemes:- Black section: Dark background with white text for main messaging
- Light gray section:
#f2f2f2background with black text for expertise cards
Internationalization
All text content is translated using theuseLanguage hook:
First line of main heading (e.g., “SOFTWARE”)
Second line of main heading (e.g., “ENGINEERING”)
Main value proposition paragraph
First line of subtitle (e.g., “CUSTOM”)
Second line of subtitle (e.g., “SOLUTIONS”)
Secondary description paragraph
First line of expertise heading (e.g., “TECHNICAL”)
Second line of expertise heading (grayed out)
Title for first expertise area (e.g., “JAVA BACKEND”)
Description for first expertise area
IntersectionObserver animations
Elements are animated as they enter the viewport:src/components/Intro.tsx:15-23
Elements with the
data-reveal attribute are observed and animated when 10% of them becomes visible (threshold: 0.1).Expertise cards
Four expertise areas are displayed with:- Large numbers: 20vw (mobile) to 12vw (desktop) for visual hierarchy
- Staggered animations: Each card has a delay based on its index (i * 0.06s)
- Hover effects: Scale transform on the large number (scale-110)
- Responsive layout: Vertical stacking on mobile, horizontal on desktop
src/components/Intro.tsx:52-62
Styling details
Full viewport height
The black section usesmin-h-[100svh] (small viewport height) to ensure it fills the screen on mobile devices with dynamic address bars.
Border-based dividers
Expertise cards are separated with 2px black borders:- Top border on the container
- Bottom border on each card
Opacity hierarchy
- Large numbers:
text-black/10on mobile,text-black/20on desktop - Body text in black section:
text-white/80 - Body text in light section:
text-black/70 - Second line of expertise heading:
text-black/30
Dependencies
Custom hook from LanguageContext for accessing translation function
Sets up IntersectionObserver for reveal animations
References the section element for querying child elements
Related components
Experience
Also uses IntersectionObserver for reveal animations
Stack
Similar grid layout with staggered reveals
Internationalization
Learn about the translation system
Animation system
Understand the animation patterns used
