Added JobSkillResult component
This commit is contained in:
parent
5d6ca05143
commit
ab28d8c4bf
2 changed files with 112 additions and 0 deletions
71
components/JobSkillResult/index.scss
Normal file
71
components/JobSkillResult/index.scss
Normal file
|
|
@ -0,0 +1,71 @@
|
|||
.JobSkillResult {
|
||||
border-radius: 6px;
|
||||
display: flex;
|
||||
gap: $unit;
|
||||
padding: $unit * 1.5;
|
||||
align-items: center;
|
||||
|
||||
&:hover {
|
||||
background: $grey-90;
|
||||
cursor: pointer;
|
||||
|
||||
.Info .skill.pill {
|
||||
background: $grey-80;
|
||||
}
|
||||
}
|
||||
|
||||
.Info {
|
||||
display: flex;
|
||||
flex-direction: row;
|
||||
gap: calc($unit / 2);
|
||||
width: 100%;
|
||||
|
||||
.skill.pill {
|
||||
background: $grey-90;
|
||||
border-radius: $unit * 2;
|
||||
color: $grey-00;
|
||||
display: inline;
|
||||
font-size: $font-tiny;
|
||||
font-weight: $medium;
|
||||
padding: calc($unit / 2) $unit;
|
||||
|
||||
&.buffing {
|
||||
background-color: $light-bg-dark;
|
||||
color: $light-text-dark;
|
||||
}
|
||||
|
||||
&.debuffing {
|
||||
background-color: $water-bg-dark;
|
||||
color: $water-text-dark;
|
||||
}
|
||||
|
||||
&.healing {
|
||||
background-color: $wind-bg-dark;
|
||||
color: $wind-text-dark;
|
||||
}
|
||||
|
||||
&.damaging {
|
||||
background-color: $fire-bg-dark;
|
||||
color: $fire-text-dark;
|
||||
}
|
||||
|
||||
&.field {
|
||||
background-color: $dark-bg-dark;
|
||||
color: $dark-text-dark;
|
||||
}
|
||||
}
|
||||
|
||||
h5 {
|
||||
color: #555;
|
||||
display: inline-block;
|
||||
font-size: $font-medium;
|
||||
font-weight: $medium;
|
||||
flex-grow: 1;
|
||||
}
|
||||
}
|
||||
|
||||
img {
|
||||
width: $unit * 6;
|
||||
height: $unit * 6;
|
||||
}
|
||||
}
|
||||
41
components/JobSkillResult/index.tsx
Normal file
41
components/JobSkillResult/index.tsx
Normal file
|
|
@ -0,0 +1,41 @@
|
|||
import React, { useEffect, useState } from "react"
|
||||
import { useRouter } from "next/router"
|
||||
import { SkillGroup, skillClassification } from "~utils/skillGroups"
|
||||
|
||||
import "./index.scss"
|
||||
|
||||
interface Props {
|
||||
data: JobSkill
|
||||
onClick: () => void
|
||||
}
|
||||
|
||||
const JobSkillResult = (props: Props) => {
|
||||
const router = useRouter()
|
||||
const locale =
|
||||
router.locale && ["en", "ja"].includes(router.locale) ? router.locale : "en"
|
||||
|
||||
const skill = props.data
|
||||
|
||||
const [group, setGroup] = useState<SkillGroup | undefined>()
|
||||
|
||||
useEffect(() => {
|
||||
setGroup(skillClassification.find((group) => group.id === skill.color))
|
||||
}, [skill, setGroup, skillClassification])
|
||||
|
||||
const jobSkillUrl = () =>
|
||||
`${process.env.NEXT_PUBLIC_SIERO_IMG_URL}/job-skills/${skill.slug}.png`
|
||||
|
||||
return (
|
||||
<li className="JobSkillResult" onClick={props.onClick}>
|
||||
<img alt={skill.name[locale]} src={jobSkillUrl()} />
|
||||
<div className="Info">
|
||||
<h5>{skill.name[locale]}</h5>
|
||||
<div className={`skill pill ${group?.name["en"].toLowerCase()}`}>
|
||||
{group?.name[locale]}
|
||||
</div>
|
||||
</div>
|
||||
</li>
|
||||
)
|
||||
}
|
||||
|
||||
export default JobSkillResult
|
||||
Loading…
Reference in a new issue