Proyectos de Subversion LeadersLinked - SPA

Rev

Autoría | Ultima modificación | Ver Log |

import React from 'react';
import { styled } from '@mui/material';

import { useBasicSettings } from '@account-settings/hooks';
import { SettingsWidget } from '@account-settings/components';

import { Form, FormButton, FormCheckbox, FormInput, FormSelect, Spinner } from '@shared/components';

const Row = styled('div')(({ theme }) => ({
  display: 'flex',
  gap: theme.spacing(1)
}));

const gendersOptions = [
  { label: 'Masculino', value: 'm' },
  { label: 'Femenino', value: 'f' }
];

const BasicSettings = () => {
  const { formValues, timezones, loading, updateSettings } = useBasicSettings();

  if (loading) return <Spinner />;

  return (
    <SettingsWidget title='Información básica'>
      <Form onSubmit={updateSettings} defaultValues={formValues}>
        <Row>
          <FormInput
            label='Nombre'
            placeholder='Ingrese su nombre'
            name='first_name'
            rules={{ required: 'Este campo es requerido' }}
          />
          <FormInput
            label='Apellido'
            placeholder='Ingrese su apellido'
            name='last_name'
            rules={{ required: 'Este campo es requerido' }}
          />
        </Row>

        <Row>
          <FormInput
            label='Correo'
            placeholder='Ingrese su correo'
            name='email'
            rules={{
              required: 'Este campo es requerido',
              pattern: {
                message: 'Por favor ingrese un correo válido',
                value: /^[^\s@]+@[^\s@]+\.[^\s@]+$/
              }
            }}
          />
          <FormInput
            label='Teléfono'
            placeholder='Ingrese su teléfono'
            name='phone'
            rules={{
              required: 'Por favor ingrese su número de teléfono',
              pattern: {
                message: 'Por favor ingrese un número de teléfono válido',
                value: /^\+[1-9]{1}[0-9]{0,2}[2-9]{1}[0-9]{2}[2-9]{1}[0-9]{2}[0-9]{4}$/
              }
            }}
          />
        </Row>

        <Row>
          <FormSelect
            label='Género'
            name='gender'
            placeholder='Seleccione su género'
            rules={{ required: 'Este campo es requerido' }}
            options={gendersOptions}
          />
          <FormSelect
            label='Zona horaria'
            name='timezone'
            placeholder='Seleccione su zona horaria'
            rules={{ required: 'Este campo es requerido' }}
            options={timezones}
          />
        </Row>

        <FormCheckbox
          label='Eres mayor de 18 años'
          name='is_adult'
          rules={{ required: 'Este campo es requerido' }}
        />

        <FormButton>Guardar</FormButton>
      </Form>
    </SettingsWidget>
  );
};

export default BasicSettings;