import DateTimePicker, { DateTimePickerEvent } from '@react-native-community/datetimepicker' import React from 'react' import { Modal, Platform, StyleSheet, View } from 'react-native' import { Text } from '../../../components/display/text' import FormSheet from '../../../components/primitive/form_sheet' import { useTheme } from '../../../hooks' export type AgeCheckSelectBirthdateProps = { onChange: (date: Date) => void onDismiss?: () => void onRequestClose: () => void onSubmit: (date: Date) => void value?: Date | null visible?: boolean } export function AgeCheckSelectBirthdateModal(props: AgeCheckSelectBirthdateProps) { if (Platform.OS === 'ios') return if (Platform.OS === 'android') return return Birthdate selection is not supported on this platform. } const MINIMUM_BIRTHDATE = new Date(1900, 0, 1) function IOSBirthdateModal({ onChange, onDismiss, onRequestClose, onSubmit, value, visible, }: AgeCheckSelectBirthdateProps) { const styles = useStyles() const today = React.useMemo(() => new Date(), []) const selected = value || today const handleChange = (_event: DateTimePickerEvent, date?: Date) => { if (date) onChange(date) } const handleSave = () => { onSubmit(selected) onRequestClose() } return ( Your birthdate Cancel Birthdate ) } function AndroidBirthdatePicker({ onRequestClose, onSubmit, value, visible, }: AgeCheckSelectBirthdateProps) { if (!visible) return null const today = new Date() const selected = value || today const handleAndroidDateChange = (event: DateTimePickerEvent, selectedDate?: Date) => { if (event.type === 'set' && selectedDate) { onSubmit(selectedDate) } onRequestClose() } return ( ) } const useStyles = () => { const { colors } = useTheme() return StyleSheet.create({ formSheet: { backgroundColor: colors.surfaceColor080, }, formSheetContent: { flex: 1, }, content: { flex: 1, backgroundColor: colors.surfaceColor080, padding: 16, justifyContent: 'flex-start', }, card: { backgroundColor: colors.surfaceColor100, borderRadius: 8, padding: 16, }, label: { marginBottom: 8, textTransform: 'uppercase', }, pickerContainer: { backgroundColor: colors.surfaceColor100, borderRadius: 8, }, }) }