Proyectos de Subversion LeadersLinked - SPA

Rev

Rev 554 | Rev 611 | Ir a la última revisión | | Comparar con el anterior | Ultima modificación | Ver Log |

Rev Autor Línea Nro. Línea
5 stevensc 1
import React from 'react'
530 stevensc 2
import styled from 'styled-components'
3
import { device } from '../../styles/MediaQueries'
534 stevensc 4
import { Avatar } from '@mui/material'
5 stevensc 5
 
531 stevensc 6
const LayoutContainer = styled.div`
530 stevensc 7
  background-color: var(--bg-color);
8
  box-shadow: 0px 0px 0px 1px rgba(0, 0, 0, 0.08);
5 stevensc 9
  height: fit-content;
530 stevensc 10
  width: -moz-available;
11
  width: -webkit-fill-available;
12
  width: fill-available;
597 stevensc 13
  overflow: hidden;
14
  position: relative;
536 stevensc 15
  span {
16
    font-size: 0.9rem;
17
  }
530 stevensc 18
  @media ${device.tablet} {
19
    border-radius: var(--border-radius);
20
  }
5 stevensc 21
`
22
 
532 stevensc 23
const LayoutHeader = styled.div`
24
  display: flex;
25
  gap: 0.5rem;
26
  padding: 5px 1rem;
27
  align-items: center;
537 stevensc 28
  justify-content: space-between;
532 stevensc 29
  position: relative;
30
`
31
 
535 stevensc 32
const LayoutBody = styled.div`
537 stevensc 33
  padding: 5px 1rem;
554 stevensc 34
  display: flex;
35
  flex-direction: column;
535 stevensc 36
  p {
37
    color: var(--font-color);
38
    font-size: 14px;
39
    text-align: justify;
536 stevensc 40
    margin: 0.5rem 0;
535 stevensc 41
  }
42
  span {
43
    font-size: 0.9rem;
44
  }
45
`
46
 
534 stevensc 47
const HeaderInfo = styled.div`
48
  align-items: center;
49
  display: inline-flex;
50
  gap: 0.5rem;
51
  width: fit-content;
535 stevensc 52
  h2 {
53
    font-size: 1rem;
54
  }
534 stevensc 55
`
56
 
531 stevensc 57
const LayoutActions = styled.div`
58
  display: flex;
532 stevensc 59
  justify-content: space-around;
531 stevensc 60
  border-top: 1px solid rgb(211, 211, 211);
532 stevensc 61
  padding: 5px 0;
531 stevensc 62
  & > button {
63
    align-items: center;
64
    border-radius: var(--border-radius);
65
    cursor: pointer;
66
    display: inline-flex;
67
    flex-direction: column;
68
    font-size: 0.9rem;
69
    padding: 5px;
70
    position: relative;
71
    &:hover {
72
      background-color: whitesmoke;
73
    }
74
    @media ${device.tablet} {
75
      flex-direction: row;
76
      gap: 0.5rem;
77
      font-size: 1rem;
78
    }
79
  }
80
`
81
 
82
const StyledContainer = ({ children, ...rest }) => {
83
  return <LayoutContainer {...rest}>{children}</LayoutContainer>
5 stevensc 84
}
85
 
531 stevensc 86
const Actions = ({ children, ...rest }) => {
87
  return <LayoutActions {...rest}>{children}</LayoutActions>
88
}
89
 
535 stevensc 90
const Body = ({ children, ...rest }) => {
91
  return <LayoutBody {...rest}>{children}</LayoutBody>
92
}
93
 
534 stevensc 94
const Header = ({ image, title, children, ...rest }) => {
95
  return (
96
    <LayoutHeader {...rest}>
97
      <HeaderInfo>
98
        {image && (
99
          <Avatar
100
            src={image}
101
            alt={`${title} profile image`}
102
            sx={{ width: '50px', height: '50px' }}
103
          />
104
        )}
105
        {title && <h2>{title}</h2>}
106
      </HeaderInfo>
107
      {children}
108
    </LayoutHeader>
109
  )
532 stevensc 110
}
111
 
531 stevensc 112
StyledContainer.Actions = Actions
532 stevensc 113
StyledContainer.Header = Header
535 stevensc 114
StyledContainer.Body = Body
531 stevensc 115
 
116
export default StyledContainer