You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
59 lines
1.3 KiB
59 lines
1.3 KiB
import React from 'react';
|
|
import { Tooltip } from 'antd';
|
|
import { EditOutlined } from '@ant-design/icons';
|
|
import { css } from '@emotion/react';
|
|
import useSiteToken from '../../hooks/useSiteToken';
|
|
|
|
const branchUrl = 'https://github.com/ant-design/ant-design/edit/master/';
|
|
|
|
export interface EditButtonProps {
|
|
title: React.ReactNode;
|
|
filename?: string;
|
|
}
|
|
|
|
const useStyle = () => {
|
|
const { token } = useSiteToken();
|
|
|
|
const { colorIcon, colorText, iconCls } = token;
|
|
|
|
return {
|
|
editButton: css`
|
|
a& {
|
|
display: inline-block;
|
|
text-decoration: none;
|
|
margin-inline-start: 6px;
|
|
vertical-align: middle;
|
|
position: relative;
|
|
top: -2px;
|
|
|
|
${iconCls} {
|
|
display: block;
|
|
color: ${colorIcon};
|
|
font-size: 16px;
|
|
transition: all 0.3s;
|
|
|
|
&:hover {
|
|
color: ${colorText};
|
|
}
|
|
}
|
|
}
|
|
`,
|
|
};
|
|
};
|
|
|
|
export default function EditButton({ title, filename }: EditButtonProps) {
|
|
const styles = useStyle();
|
|
|
|
return (
|
|
<Tooltip title={title}>
|
|
<a
|
|
css={styles.editButton}
|
|
href={`${branchUrl}${filename}`}
|
|
target="_blank"
|
|
rel="noopener noreferrer"
|
|
>
|
|
<EditOutlined />
|
|
</a>
|
|
</Tooltip>
|
|
);
|
|
}
|
|
|