Fix Position type in hide-from traits panel

This commit is contained in:
Ryan Salazar
2026-06-26 22:26:14 -04:00
parent 2e65ec3348
commit 18aad46ac0

View File

@@ -7,6 +7,7 @@ import {
buildHideRuleLabel,
type HideFromRule,
} from '@/lib/privacy-rules';
import type { Position } from '@/types';
interface HideFromTraitsPanelProps {
rules: HideFromRule[];
@@ -14,7 +15,7 @@ interface HideFromTraitsPanelProps {
onRemove: (id: string) => void;
}
const POSITIONS = ['top', 'vers', 'bottom', 'side', 'oral', 'watching'] as const;
const POSITIONS: Position[] = ['top', 'vers', 'bottom', 'side'];
export default function HideFromTraitsPanel({
rules,
@@ -26,7 +27,7 @@ export default function HideFromTraitsPanel({
const [weightLb, setWeightLb] = useState('220');
const [ageMin, setAgeMin] = useState('');
const [ageMax, setAgeMax] = useState('');
const [positions, setPositions] = useState<string[]>([]);
const [positions, setPositions] = useState<Position[]>([]);
const [bodyTypes, setBodyTypes] = useState<string[]>([]);
const [error, setError] = useState('');
@@ -45,8 +46,16 @@ export default function HideFromTraitsPanel({
return parts.length ? parts.join(' · ') : 'Add at least one trait';
}, [heightFt, heightIn, weightLb, ageMin, ageMax, positions, bodyTypes]);
const toggle = (list: string[], value: string, set: (v: string[]) => void) => {
set(list.includes(value) ? list.filter((x) => x !== value) : [...list, value]);
const togglePosition = (pos: Position) => {
setPositions((list) =>
list.includes(pos) ? list.filter((x) => x !== pos) : [...list, pos]
);
};
const toggleBodyType = (value: string) => {
setBodyTypes((list) =>
list.includes(value) ? list.filter((x) => x !== value) : [...list, value]
);
};
const handleAdd = () => {
@@ -196,7 +205,7 @@ export default function HideFromTraitsPanel({
<button
key={p}
type="button"
onClick={() => toggle(positions, p, setPositions)}
onClick={() => togglePosition(p)}
className={`px-2.5 py-1 rounded-full text-xs capitalize ${
positions.includes(p)
? 'bg-amber-500/30 text-amber-200 border border-amber-500/50'
@@ -216,7 +225,7 @@ export default function HideFromTraitsPanel({
<button
key={b}
type="button"
onClick={() => toggle(bodyTypes, b, setBodyTypes)}
onClick={() => toggleBodyType(b)}
className={`px-2.5 py-1 rounded-full text-xs capitalize ${
bodyTypes.includes(b)
? 'bg-amber-500/30 text-amber-200 border border-amber-500/50'