Proyectos de Subversion LeadersLinked - SPA

Rev

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