-
Notifications
You must be signed in to change notification settings - Fork 15
/
Copy pathRibbon.jsx
53 lines (50 loc) · 1.33 KB
/
Ribbon.jsx
1
2
3
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
import React from "react";
import styled, { keyframes } from "styled-components";
import { Inter } from "next/font/google"
const ribbonDrop = keyframes`
0% {
transform: translateY(-100%);
}
100% {
transform: translateY(0);
}
`;
const RibbonWrap = styled.div`
--ribbon-background-color: #0071e3;
--ribbon-text-color: #fff;
--ribbon-link-color: #fff;
--ribbon-focus-color: rgba(255,255,255,0.6);
overflow: hidden;
${({ onClick }) => onClick ? `cursor: pointer;` : ``}
`;
const RibbonDrop = styled.div`
animation: ${ribbonDrop} 0.8s cubic-bezier(0.42, 0, 0.58, 1) forwards;
`;
const RibbonContentWrapper = styled.div`
background-color: var(--ribbon-background-color);
padding-top: 0.94118em;
padding-bottom: 0.94118em;
text-align: center;
`;
const RibbonContent = styled.div`
color: var(--ribbon-text-color);
font-size: 14px;
line-height: 1.42859;
font-weight: 400;
letter-spacing: -.016em;
font-family: "Inter","SF Pro Icons","Helvetica Neue","Helvetica","Arial",sans-serif;
`;
function Ribbon({ children, onClick, ...props }) {
return (
<RibbonWrap onClick={onClick} {...props}>
<RibbonDrop>
<RibbonContentWrapper>
<RibbonContent>
{children}
</RibbonContent>
</RibbonContentWrapper>
</RibbonDrop>
</RibbonWrap>
)
}
export default Ribbon;