boxons/components/shared/NumberSelector.tsx

47 lines
993 B
TypeScript
Raw Permalink Normal View History

2024-10-13 11:29:36 +00:00
import { Text, View } from '@/components/shared/Themed';
import styled from '@emotion/native';
import { HorizontalSpacer } from './Spacers';
2025-04-08 21:29:14 +00:00
export interface NumberSelectorProps {
2024-10-13 11:29:36 +00:00
reps: number;
setReps: (reps: number) => void;
};
export default function NumberSelector({
setReps,
reps
2025-04-08 21:29:14 +00:00
}: NumberSelectorProps) {
2024-10-13 11:29:36 +00:00
const addReps: () => void = () => {
setReps(reps + 1);
}
const removeReps: () => void = () => {
if (reps === 0) return;
setReps(reps - 1);
}
return (
<Row>
<CustomText onPress={removeReps}>-</CustomText>
<HorizontalSpacer widthUnits={5} />
<CustomText>{reps}</CustomText>
<HorizontalSpacer widthUnits={5} />
<CustomText onPress={addReps}>+</CustomText>
</Row>
);
}
const Row = styled(View)(() => ({
flexDirection: 'row',
backgroundColor: 'black'
}));
const CustomText = styled(Text)(({ theme }) => ({
fontSize: 20,
fontWeight: 'bold',
textAlign: 'center',
color: theme.colors.fixed.white
2024-10-13 11:29:36 +00:00
}))