Proyectos de Subversion LeadersLinked - SPA

Rev

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

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