Features
- Icon CDN loading from jsdelivr/devicons
- Responsive grid (2 cols mobile, 3 tablet, 5 desktop)
- Grayscale hover effects (desktop only)
- IntersectionObserver for staggered reveal animations
- Grid-based layout with 1px borders
- Invert filter for specific icons (e.g., LaTeX)
Visual Appearance
A grid of technology cards, each containing an icon and label. On desktop, icons start grayscale and low opacity, becoming full-color on hover with a scale animation. The entire grid has a unified border system creating a seamless appearance.Component Code
Technology Stack Array
The component uses a static array of technology objects:Icon Loading
Icons are loaded from the Devicon CDN:Native lazy loading for performance optimization
Asynchronous image decoding to prevent blocking
Icon Variants
Devicon provides multiple variants per technology:original- Full-color original logoplain- Simplified versionoriginal-wordmark- Logo with textplain-wordmark- Simplified with text
Grid Layout
gap-px: 1px gap between cellsbg-white/10: Gap color (background shows through)border border-white/10: Outer border
Responsive Grid
- Mobile (
default): 2 columns - Tablet (
md): 3 columns - Desktop (
lg): 5 columns
Hover Effects
md:)
IntersectionObserver Animation
Staggered Delays
Each grid item receives a progressive delay:- Item 0: 0ms
- Item 1: 40ms
- Item 2: 80ms
- …
- Item 12: 480ms
Invert Filter
Some icons (like LaTeX) need color inversion for visibility on dark backgrounds:Accessibility
Alt Text
Image Attributes
Performance Considerations
- Lazy Loading: Icons load only when approaching viewport
- Async Decoding: Non-blocking image decode
- IntersectionObserver: Efficient scroll-based animation trigger
- Auto-unobserve: Disconnects after animation completes
- CDN Delivery: Fast global icon delivery via jsDelivr
Responsive Behavior
- 2-column grid
- 8px padding per cell
- 40px icon size
- Icons always full-color
- Labels always full opacity
- 5-column grid (3 on tablet)
- 10px padding per cell
- 56px icon size
- Icons start grayscale
- Hover effects enabled
Dependencies
Translation context for section title
Native browser API for scroll-based animations
Source Location
~/workspace/source/src/components/Stack.tsx