Modernize the profile activity calendar
## Problem
The current profile activity calendar is implemented using a legacy D3.js/SVG-based architecture that presents several challenges:
- The calendar is not fully accessible and cannot be effectively navigated using assistive technologies.
- Keyboard navigation is limited or unavailable.
- The implementation relies on aging technology that is difficult to maintain and evolve.
- The current architecture makes it challenging to introduce new functionality and improve the user experience over time.
- Performance and maintainability could be improved through a simpler rendering model.
## Goal
Modernize the profile activity calendar by replacing the legacy implementation with a Vue-based component built on semantic HTML and CSS Grid.
This work aims to establish a more accessible, maintainable, and extensible foundation while preserving the familiar contribution calendar experience.
## Expected Outcomes
### Accessibility
- Provide a fully accessible activity calendar experience.
- Support semantic HTML and appropriate ARIA labeling.
- Enable complete keyboard navigation across all calendar cells.
- Improve compatibility with screen readers and other assistive technologies.
### User Experience
- Allow users to browse contribution history across multiple years.
- Improve loading states through progressive rendering and skeleton loaders.
- Provide a more resilient experience when activity data is loading or unavailable.
- Ensure the calendar respects user preferences such as the configured first day of the week.
### Maintainability
- Remove the dependency on the legacy D3.js/SVG implementation.
- Consolidate rendering into a modern Vue component architecture.
- Reduce complexity by leveraging CSS Grid instead of custom SVG layouts.
- Create a foundation that is easier to iterate on and extend with future enhancements.
### Performance
- Simplify rendering and layout calculations.
- Reduce DOM complexity compared to the existing implementation.
- Improve responsiveness across different viewport sizes.
## Future Opportunities
By establishing a modern foundation, the activity calendar becomes significantly easier to evolve. Potential future enhancements include:
- Additional contribution insights and visualizations.
- Improved filtering and navigation capabilities.
- Enhanced responsiveness and mobile experiences.
- Further accessibility improvements based on user feedback.
## Success Criteria
- Activity calendar is fully keyboard accessible.
- Screen readers can successfully navigate and understand contribution data.
- Users can browse historical contribution years.
- Existing contribution data and visual representation remain intact.
- Legacy D3.js implementation can be removed.
- The new implementation becomes the default experience behind a feature flag rollout strategy.
## Draft
- https://gitlab.com/gitlab-org/gitlab/-/merge_requests/236549+
## Next steps
Split up work into smaller, manageable sequential MRs
issue