Manuel Bustillo 501bb3a81a
All checks were successful
Playwright Tests / test (pull_request) Has been skipped
Check usage of free licenses / build-static-assets (pull_request) Successful in 1m12s
Add copyright notice / copyright_notice (pull_request) Successful in 1m32s
Build Nginx-based docker image / build-static-assets (push) Successful in 6m2s
Update copyright assignment to cover 2025 and include all contributors
2025-01-13 21:36:52 +01:00

40 lines
1019 B
TypeScript

/* Copyright (C) 2024-2025 LibreWeddingPlanner contributors*/
import { Slider } from 'primereact/slider';
export default function AffinitySlider({ value, onChange }: { value: number, onChange: (value: number) => void }) {
const toNumber = (value : number | [number, number]) => {
if(value instanceof Array) {
return value[0];
}
return value;
}
const label = (value: number) => {
if (value < 0.2) {
return 'Nemesis';
} else if (value < 0.5) {
return 'Enemies';
} else if (value < 0.9) {
return 'Bad vibes';
} else if (value < 1.1) {
return 'Neutral';
} else if (value < 1.5) {
return 'Good vibes';
} else if (value < 1.8) {
return 'Good friends';
} else {
return 'Besties';
}
}
return (
<>
<Slider value={value} min={0} max={2} step={.1} onChange={(e) => onChange(toNumber(e.value))} className='w-80 bg-gray-400' />
<span className="px-4 w-1/5">
{label(value)}
</span>
</>
)
}