Proyectos de Subversion LeadersLinked - SPA

Rev

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

import React, { useContext } from 'react'
import {
  Accordion,
  AccordionDetails,
  AccordionSummary,
  Box,
  Button,
  Typography
} from '@mui/material'
import { Add, StarRateRounded, ExpandMore } from '@mui/icons-material'

import { HabitsContext } from '@app/contexts/habits'

import Widget from '@app/components/UI/Widget'

export default function Habits() {
  const { habits, toggleModal } = useContext(HabitsContext)

  return (
    <>
      <Box
        sx={{
          display: 'flex',
          justifyContent: 'space-between',
          alignItems: 'center',
          gap: 2,
          marginBottom: 1,
          paddingX: 1
        }}
      >
        <Typography variant='h1'>Habitos</Typography>

        <Button onClick={toggleModal}>
          <Add />
          Agregar
        </Button>
      </Box>

      <Box sx={{ display: 'flex', flexDirection: 'column', gap: 1 }}>
        {habits.map(
          ({
            id,
            name,
            description,
            action = {
              frequency: 'Diariamente'
            },
            method = {
              type: 'video',
              content: 'https://example.com/ejercicio-diario.mp4'
            },
            goal = {
              amount: 30 // minutos de ejercicio diario
            }
          }) => (
            <Widget key={id}>
              <Widget.Body>
                <Box
                  sx={{
                    display: 'flex',
                    alignItems: 'center',
                    gap: 1,
                    justifyContent: 'space-between'
                  }}
                >
                  <Typography variant='h3'>{name}</Typography>
                  <Typography variant='body2'>
                    <StarRateRounded />
                    {goal.amount}
                  </Typography>
                </Box>
                <Typography>{description}</Typography>
                <Typography variant='body2'>{action.frequency}</Typography>

                <Accordion
                  sx={{
                    display: method.content ? 'block' : 'none',
                    backgroundColor: 'transparent',
                    boxShadow: 'none',
                    margin: '0 !important',
                    '&::before': {
                      height: 0
                    }
                  }}
                >
                  <AccordionSummary
                    expandIcon={<ExpandMore />}
                    disableRipple
                    sx={{
                      minHeight: 'auto !important',
                      padding: '0 1rem',
                      '& .MuiAccordionSummary-content': {
                        margin: '0 !important'
                      }
                    }}
                  >
                    <Typography variant='h3'>Método</Typography>
                  </AccordionSummary>
                  <AccordionDetails>
                    <Widget.Media src={method.content} alt={name} />
                  </AccordionDetails>
                </Accordion>
              </Widget.Body>
            </Widget>
          )
        )}
      </Box>
    </>
  )
}