|
import React, { Component } from "react"; |
|
import classNames from "classnames"; |
|
import "../styles/skillsMenu.css"; |
|
import skills from "./skillsData"; |
|
import frontendIcon from "../assets/eagle-emblem.png"; |
|
import backendIcon from "../assets/hawk-emblem.png"; |
|
|
|
export default class SkillsMenu extends Component { |
|
constructor(props) { |
|
super(props); |
|
this.state = { |
|
activeMenuItem: 1, |
|
}; |
|
} |
|
|
|
handleMenuItemClick = (menuItem) => { |
|
this.setState({ |
|
activeMenuItem: menuItem, |
|
}); |
|
}; |
|
|
|
renderContent = (skills) => { |
|
return skills.map((skill, index) => ( |
|
<div |
|
key={index} |
|
className={`skill-sub-container-${this.state.activeMenuItem}`} |
|
> |
|
<h3>{skill.title}</h3> |
|
<div className="level-container"> |
|
{[...Array(6)].map((_, i) => ( |
|
<div |
|
key={i} |
|
className={`level-point ${ |
|
i < skill.level ? "filled" : "unfilled" |
|
}`} |
|
/> |
|
))} |
|
</div> |
|
</div> |
|
)); |
|
}; |
|
|
|
render() { |
|
const { activeMenuItem } = this.state; |
|
const menuItems = ["FRONT-END", "BACK-END"]; |
|
|
|
const currentIcon = activeMenuItem === 1 ? frontendIcon : backendIcon; |
|
|
|
return ( |
|
<div className="skill-menu"> |
|
{menuItems.map((item, index) => ( |
|
<div |
|
key={index} |
|
className={classNames("skill-item", { |
|
activeSkill: activeMenuItem === index + 1, |
|
})} |
|
onClick={() => this.handleMenuItemClick(index + 1)} |
|
> |
|
<h2 className="skill-title">{item}</h2> |
|
</div> |
|
))} |
|
<img className="skill-icon" src={currentIcon} alt="current skill" /> |
|
<div className="skill-sub-container"> |
|
{this.renderContent(skills[activeMenuItem])} |
|
</div> |
|
</div> |
|
); |
|
} |
|
} |