Newer
Older
import styled from 'styled-components'
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
const Icon = styled.div`
background: #ddd;
height: 100px;
padding: 5px;
position: relative;
transition: transform 0.3s ease;
width: 70px;
`
const Extension = styled.div`
background: #888;
color: white;
font-size: 12px;
left: 20px;
padding: 2px;
position: absolute;
right: 0;
text-align: center;
text-transform: uppercase;
top: 20px;
`
const Filename = styled.div`
color: #aaa;
font-size: 1em;
font-style: italic;
margin: 0.7em;
text-align: center;
width: 20ch;
word-break: break-all; /* to divide into lines */
`
const Root = styled.div`
align-items: center;
display: inline-flex;
flex-direction: column;
margin-bottom: 2em;
margin-right: 3em;
position: relative;
width: 20ch;
&::before,
&::after {
cursor: pointer;
transition: transform 0.3s;
}
&::after {
background: var(--color-danger);
border: 1px solid white;
color: white;
content: 'remove';
cursor: pointer;
font-size: 0.8em;
left: 70%;
letter-spacing: 0.5px;
padding: 0.2em 0.4em;
position: absolute;
text-transform: uppercase;
top: 4em;
transform: scaleX(0);
transform-origin: 0 0;
z-index: 2;
}
&::before {
background: var(--color-primary);
border: 1px solid white;
color: white;
content: 'replace';
cursor: pointer;
font-size: 0.8em;
left: 70%;
letter-spacing: 0.5px;
padding: 0.2em 0.4em;
position: absolute;
text-transform: uppercase;
top: 6em;
transform: scaleX(0);
transform-origin: 0 0;
z-index: 3;
}
&:hover {
${Extension} {
background: white;
border-right: 2px solid #ddd;
color: var(--color-primary);
}
${Icon} {
background: var(--color-primary);
transform: skewY(6deg) rotate(-6deg);
}
&::after,
&::before {
transform: scaleX(1);
}
}
`
const getFileExtension = ({ name }) => name.replace(/^.+\./, '')
const File = ({ value }) => (
<Root>
<Icon>
<Extension>{getFileExtension(value)}</Extension>
</Icon>
)
export default File