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:
@@ -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
|
||||
}
|
||||
|
||||
|
||||
@@ -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 {
|
||||
|
||||
Reference in New Issue
Block a user