Convert buttons to links.

This commit is contained in:
Mike Cao 2020-09-15 19:16:05 -07:00
parent e35821a0c3
commit 5e57b26e46
16 changed files with 82 additions and 50 deletions

19
.github/stale.yml vendored Normal file
View File

@ -0,0 +1,19 @@
# Number of days of inactivity before an issue becomes stale
daysUntilStale: 60
# Number of days of inactivity before a stale issue is closed
daysUntilClose: 7
# Issues with these labels will never be considered stale
exemptLabels:
- pinned
- security
- enhancement
- bug
# Label to use when marking an issue as stale
staleLabel: wontfix
# Comment to post when marking an issue as stale. Set to `false` to disable
markComment: >
This issue has been automatically marked as stale because it has not had
recent activity. It will be closed if no further activity occurs. Thank you
for your contributions.
# Comment to post when closing a stale issue. Set to `false` to disable
closeComment: false

View File

@ -1,12 +1,12 @@
.link, a.link,
.link:active, a.link:active,
.link:visited { a.link:visited {
position: relative; position: relative;
color: #2c2c2c; color: #2c2c2c;
text-decoration: none; text-decoration: none;
} }
.link:before { a.link:before {
content: ''; content: '';
position: absolute; position: absolute;
bottom: -2px; bottom: -2px;
@ -17,7 +17,7 @@
transition: width 100ms; transition: width 100ms;
} }
.link:hover:before { a.link:hover:before {
width: 100%; width: 100%;
transition: width 100ms; transition: width 100ms;
} }

View File

@ -1,7 +1,8 @@
.buttons { .buttons {
display: flex; display: flex;
align-items: center;
} }
.buttons button + button { .buttons button + * {
margin-left: 10px; margin-left: 10px;
} }

View File

@ -1,21 +1,26 @@
import React from 'react'; import React from 'react';
import { FormattedMessage } from 'react-intl'; import { FormattedMessage } from 'react-intl';
import classNames from 'classnames';
import Button from 'components/common/Button';
import Logo from 'assets/logo.svg';
import styles from './Footer.module.css'; import styles from './Footer.module.css';
export default function Footer() { export default function Footer() {
const version = process.env.VERSION; const version = process.env.VERSION;
return ( return (
<footer className="container"> <footer className="container">
<div className={classNames(styles.footer, 'row justify-content-center')}> <div className={styles.footer}>
<FormattedMessage id="footer.powered-by" defaultMessage="Powered by" /> <div />
<a href="https://umami.is"> <div>
<Button className={styles.button} icon={<Logo />} size="small"> <FormattedMessage
<b>umami</b> id="footer.powered-by"
</Button> defaultMessage="Powered by {name} {version}"
</a> values={{
name: (
<a href="https://umami.is">
<b>umami</b>
</a>
),
}}
/>
</div>
<div>{`v${version}`}</div> <div>{`v${version}`}</div>
</div> </div>
</footer> </footer>

View File

@ -5,11 +5,3 @@
font-size: var(--font-size-small); font-size: var(--font-size-small);
min-height: 100px; min-height: 100px;
} }
.footer a {
text-decoration: none;
}
.button {
margin: 0 5px;
}

View File

@ -1,17 +1,15 @@
import React from 'react'; import React from 'react';
import { FormattedMessage } from 'react-intl'; import { FormattedMessage } from 'react-intl';
import { useRouter } from 'next/router'; import Link from 'components/common/Link';
import PageHeader from 'components/layout/PageHeader'; import PageHeader from 'components/layout/PageHeader';
import Button from 'components/common/Button';
import ActiveUsers from './ActiveUsers'; import ActiveUsers from './ActiveUsers';
import Arrow from 'assets/arrow-right.svg'; import Arrow from 'assets/arrow-right.svg';
import styles from './WebsiteHeader.module.css'; import styles from './WebsiteHeader.module.css';
import RefreshButton from '../common/RefreshButton'; import RefreshButton from '../common/RefreshButton';
import ButtonLayout from '../layout/ButtonLayout'; import ButtonLayout from '../layout/ButtonLayout';
import Icon from '../common/Icon';
export default function WebsiteHeader({ websiteId, title, showLink = false }) { export default function WebsiteHeader({ websiteId, title, showLink = false }) {
const router = useRouter();
return ( return (
<PageHeader> <PageHeader>
<div className={styles.title}>{title}</div> <div className={styles.title}>{title}</div>
@ -19,19 +17,14 @@ export default function WebsiteHeader({ websiteId, title, showLink = false }) {
<ButtonLayout> <ButtonLayout>
<RefreshButton websiteId={websiteId} /> <RefreshButton websiteId={websiteId} />
{showLink && ( {showLink && (
<Button <Link
icon={<Arrow />} href="/website/[...id]"
onClick={() => as={`/website/${websiteId}/${title}`}
router.push('/website/[...id]', `/website/${websiteId}/${title}`, { className={styles.link}
shallow: true,
})
}
size="small"
> >
<div> <FormattedMessage id="button.view-details" defaultMessage="View details" />
<FormattedMessage id="button.view-details" defaultMessage="View details" /> <Icon icon={<Arrow />} size="small" />
</div> </Link>
</Button>
)} )}
</ButtonLayout> </ButtonLayout>
</PageHeader> </PageHeader>

View File

@ -4,10 +4,14 @@
line-height: var(--font-size-large); line-height: var(--font-size-large);
} }
.button { .link {
font-size: var(--font-size-small); font-size: var(--font-size-small);
} }
.link svg {
margin-left: 10px;
}
@media only screen and (max-width: 576px) { @media only screen and (max-width: 576px) {
.active { .active {
display: none; display: none;

View File

@ -13,7 +13,7 @@
"button.save": "Speichern", "button.save": "Speichern",
"button.view-details": "Details anzeigen", "button.view-details": "Details anzeigen",
"button.websites": "Webseiten", "button.websites": "Webseiten",
"footer.powered-by": "Powered by", "footer.powered-by": "Powered by {name}",
"header.nav.dashboard": "Übersicht", "header.nav.dashboard": "Übersicht",
"header.nav.settings": "Einstellungen", "header.nav.settings": "Einstellungen",
"label.administrator": "Administrator", "label.administrator": "Administrator",

View File

@ -13,7 +13,7 @@
"button.save": "Save", "button.save": "Save",
"button.view-details": "View details", "button.view-details": "View details",
"button.websites": "Websites", "button.websites": "Websites",
"footer.powered-by": "Powered by", "footer.powered-by": "Powered by {name}",
"header.nav.dashboard": "Dashboard", "header.nav.dashboard": "Dashboard",
"header.nav.settings": "Settings", "header.nav.settings": "Settings",
"label.administrator": "Administrator", "label.administrator": "Administrator",

View File

@ -13,7 +13,7 @@
"button.save": "Guardar", "button.save": "Guardar",
"button.view-details": "Ver detalles", "button.view-details": "Ver detalles",
"button.websites": "Sitios", "button.websites": "Sitios",
"footer.powered-by": "Desarrollado con", "footer.powered-by": "Desarrollado con {name}",
"header.nav.dashboard": "Panel de control", "header.nav.dashboard": "Panel de control",
"header.nav.settings": "Configuraciones", "header.nav.settings": "Configuraciones",
"label.administrator": "Administrador", "label.administrator": "Administrador",

View File

@ -13,7 +13,7 @@
"button.save": "保存", "button.save": "保存",
"button.view-details": "詳細表示", "button.view-details": "詳細表示",
"button.websites": "Webサイト", "button.websites": "Webサイト",
"footer.powered-by": "Powered by", "footer.powered-by": "Powered by {name}",
"header.nav.dashboard": "ダッシュボード", "header.nav.dashboard": "ダッシュボード",
"header.nav.settings": "設定", "header.nav.settings": "設定",
"label.administrator": "管理者", "label.administrator": "管理者",

View File

@ -13,7 +13,7 @@
"button.save": "Opslaan", "button.save": "Opslaan",
"button.view-details": "Meer details", "button.view-details": "Meer details",
"button.websites": "Websites", "button.websites": "Websites",
"footer.powered-by": "mogelijk gemaakt door", "footer.powered-by": "mogelijk gemaakt door {name}",
"header.nav.dashboard": "Dashboard", "header.nav.dashboard": "Dashboard",
"header.nav.settings": "Instellingen", "header.nav.settings": "Instellingen",
"label.administrator": "Administrator", "label.administrator": "Administrator",

View File

@ -13,7 +13,7 @@
"button.save": "Сохранить", "button.save": "Сохранить",
"button.view-details": "Посмотреть детали", "button.view-details": "Посмотреть детали",
"button.websites": "Сайты", "button.websites": "Сайты",
"footer.powered-by": "на движке", "footer.powered-by": "на движке {name}",
"header.nav.dashboard": "Информационная панель", "header.nav.dashboard": "Информационная панель",
"header.nav.settings": "Настройки", "header.nav.settings": "Настройки",
"label.administrator": "Администратор", "label.administrator": "Администратор",

View File

@ -13,7 +13,7 @@
"button.save": "Kaydet", "button.save": "Kaydet",
"button.view-details": "Detayı incele", "button.view-details": "Detayı incele",
"button.websites": "Web siteleri", "button.websites": "Web siteleri",
"footer.powered-by": "Sağlayıcı:", "footer.powered-by": "Sağlayıcı: {name}",
"header.nav.dashboard": "Kontrol Paneli", "header.nav.dashboard": "Kontrol Paneli",
"header.nav.settings": "Ayarlar", "header.nav.settings": "Ayarlar",
"label.administrator": "Yönetici", "label.administrator": "Yönetici",

View File

@ -13,7 +13,7 @@
"button.save": "保存", "button.save": "保存",
"button.view-details": "查看更多", "button.view-details": "查看更多",
"button.websites": "网站", "button.websites": "网站",
"footer.powered-by": "运行", "footer.powered-by": "运行 {name}",
"header.nav.dashboard": "仪表板", "header.nav.dashboard": "仪表板",
"header.nav.settings": "设置", "header.nav.settings": "设置",
"label.administrator": "管理员", "label.administrator": "管理员",

View File

@ -56,7 +56,25 @@ select {
a, a,
a:active, a:active,
a:visited { a:visited {
color: var(--primary400); position: relative;
color: #2c2c2c;
text-decoration: none;
}
a:before {
content: '';
position: absolute;
bottom: -2px;
width: 0;
height: 2px;
background: #2680eb;
opacity: 0.5;
transition: width 100ms;
}
a:hover:before {
width: 100%;
transition: width 100ms;
} }
input[type='text'], input[type='text'],