feat: add explicit sidebar placement control and responsive design (1024-1280px)

- Add sidebar field to SkillCategory model for explicit left/right control
- Update splitSkills to respect sidebar field instead of automatic splitting
- Add responsive CSS for 1024-1280px: collapse labels, icons-only buttons, EN/ES language selector
- Remove language switcher animations
- Ensure desktop view (>1280px) always shows full sidebar content
- Move Databases and Infrastructure to right sidebar
- Reduce font sizes in responsive range
- Update project logos (Lidering, Jorpack, Delivery Bikes)
This commit is contained in:
juanatsap
2025-11-08 15:05:54 +00:00
parent 4761145ad8
commit 286d0d0e3e
9 changed files with 215 additions and 38 deletions
+9 -8
View File
@@ -199,21 +199,22 @@ func (h *CVHandler) ExportPDF(w http.ResponseWriter, r *http.Request) {
}
// splitSkills splits skill categories between left (page 1) and right (page 2) sidebars
// Left sidebar shows first 7 categories, right sidebar shows remaining categories
// Each category explicitly specifies which sidebar it belongs to via the "sidebar" field
func splitSkills(skills []models.SkillCategory) (left, right []models.SkillCategory) {
if len(skills) == 0 {
return nil, nil
}
// Split at index 7 (first 7 items on left)
splitIndex := 7
if len(skills) < splitIndex {
return skills, nil
// Filter by sidebar field
for _, skill := range skills {
if skill.Sidebar == "right" {
right = append(right, skill)
} else {
// Default to left if not specified or if set to "left"
left = append(left, skill)
}
}
left = skills[:splitIndex]
right = skills[splitIndex:]
return left, right
}
+1
View File
@@ -89,6 +89,7 @@ type SkillCategory struct {
Category string `json:"category"`
Proficiency int `json:"proficiency"`
Items []string `json:"items"`
Sidebar string `json:"sidebar"` // "left" or "right"
}
type Language struct {