forked from codesandbox/codesandbox-client
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathindex.tsx
More file actions
71 lines (59 loc) · 1.46 KB
/
index.tsx
File metadata and controls
71 lines (59 loc) · 1.46 KB
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
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
import React from 'react';
import styled from 'styled-components';
import Tippy, { useSingleton } from '@tippy.js/react';
import { animateFill, Props } from 'tippy.js';
import theme from '../../theme';
import 'tippy.js/dist/tippy.css';
import 'tippy.js/dist/backdrop.css';
import 'tippy.js/animations/shift-away.css';
const defaultProps: Partial<Props> = {
delay: [500, 100],
boundary: 'window',
animateFill: true,
plugins: [animateFill],
};
const mainStyles = `
background-color: rgb(21, 24, 25);
.tippy-backdrop {
background-color: rgb(21, 24, 25);
}
`;
const MainTippy = styled(Tippy)`
${mainStyles}
`;
const UpdateTippy = styled(Tippy)`
background-color: ${theme.green()};
border-radius: 2px;
padding: 0;
.tippy-arrow {
border-bottom-color: ${theme.green()};
}
`;
export const SingletonTooltip = styled(
({ children, style = {}, content, ...props }) => {
const singleton = useSingleton({
...defaultProps,
updateDuration: 250,
...props,
});
return children(singleton);
}
)`
${mainStyles}
`;
const Tooltip = ({ children, style = {}, content, ...props }) => {
const TippyComponent = props.theme === 'update' ? UpdateTippy : MainTippy;
return (
<TippyComponent content={content} {...defaultProps} {...props}>
<span
style={{
outlineColor: 'transparent',
...style,
}}
>
{children}
</span>
</TippyComponent>
);
};
export default Tooltip;