mirror of
https://github.com/kremalicious/umami.git
synced 2025-01-04 19:15:09 +01:00
Convert buttons to links.
This commit is contained in:
parent
e35821a0c3
commit
5e57b26e46
19
.github/stale.yml
vendored
Normal file
19
.github/stale.yml
vendored
Normal 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
|
@ -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;
|
||||||
}
|
}
|
||||||
|
@ -1,7 +1,8 @@
|
|||||||
.buttons {
|
.buttons {
|
||||||
display: flex;
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
}
|
}
|
||||||
|
|
||||||
.buttons button + button {
|
.buttons button + * {
|
||||||
margin-left: 10px;
|
margin-left: 10px;
|
||||||
}
|
}
|
||||||
|
@ -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>
|
||||||
|
@ -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;
|
|
||||||
}
|
|
||||||
|
@ -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>
|
||||||
|
@ -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;
|
||||||
|
@ -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",
|
||||||
|
@ -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",
|
||||||
|
@ -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",
|
||||||
|
@ -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": "管理者",
|
||||||
|
@ -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",
|
||||||
|
@ -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": "Администратор",
|
||||||
|
@ -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",
|
||||||
|
@ -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": "管理员",
|
||||||
|
@ -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'],
|
||||||
|
Loading…
Reference in New Issue
Block a user