diff --git a/.github/stale.yml b/.github/stale.yml new file mode 100644 index 00000000..2dc5b675 --- /dev/null +++ b/.github/stale.yml @@ -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 diff --git a/components/common/Link.module.css b/components/common/Link.module.css index 54cebc0c..d6dc0536 100644 --- a/components/common/Link.module.css +++ b/components/common/Link.module.css @@ -1,12 +1,12 @@ -.link, -.link:active, -.link:visited { +a.link, +a.link:active, +a.link:visited { position: relative; color: #2c2c2c; text-decoration: none; } -.link:before { +a.link:before { content: ''; position: absolute; bottom: -2px; @@ -17,7 +17,7 @@ transition: width 100ms; } -.link:hover:before { +a.link:hover:before { width: 100%; transition: width 100ms; } diff --git a/components/common/RefreshButton.js b/components/common/RefreshButton.js index 60d0976e..b3e00a27 100644 --- a/components/common/RefreshButton.js +++ b/components/common/RefreshButton.js @@ -1,5 +1,6 @@ import React, { useState, useEffect } from 'react'; import { useDispatch, useSelector } from 'react-redux'; +import { FormattedMessage } from 'react-intl'; import { setDateRange } from 'redux/actions/websites'; import Button from './Button'; import Refresh from 'assets/redo.svg'; @@ -24,5 +25,13 @@ export default function RefreshButton({ websiteId }) { setLoading(false); }, [completed]); - return - +
+
+
+ + umami + + ), + }} + /> +
{`v${version}`}
diff --git a/components/layout/Footer.module.css b/components/layout/Footer.module.css index 87008340..7c671d7e 100644 --- a/components/layout/Footer.module.css +++ b/components/layout/Footer.module.css @@ -5,11 +5,3 @@ font-size: var(--font-size-small); min-height: 100px; } - -.footer a { - text-decoration: none; -} - -.button { - margin: 0 5px; -} diff --git a/components/messages.js b/components/messages.js new file mode 100644 index 00000000..4f0a67c8 --- /dev/null +++ b/components/messages.js @@ -0,0 +1,17 @@ +import React from 'react'; +import { defineMessages, FormattedMessage } from 'react-intl'; + +export const labels = defineMessages({ + unknown: { id: 'label.unknown', defaultMessage: 'Unknown' }, +}); + +export const devices = defineMessages({ + desktop: { id: 'device.desktop', defaultMessage: 'Desktop' }, + laptop: { id: 'device.laptop', defaultMessage: 'Laptop' }, + tablet: { id: 'device.tablet', defaultMessage: 'Tablet' }, + mobile: { id: 'device.mobile', defaultMessage: 'Mobile' }, +}); + +export function getDeviceMessage(device) { + return ; +} diff --git a/components/metrics/DevicesTable.js b/components/metrics/DevicesTable.js index 0f9c54e7..c37d18ea 100644 --- a/components/metrics/DevicesTable.js +++ b/components/metrics/DevicesTable.js @@ -2,6 +2,7 @@ import React from 'react'; import MetricsTable from './MetricsTable'; import { deviceFilter } from 'lib/filters'; import { FormattedMessage } from 'react-intl'; +import { getDeviceMessage } from 'components/messages'; export default function DevicesTable({ websiteId, limit, onExpand }) { return ( @@ -12,6 +13,7 @@ export default function DevicesTable({ websiteId, limit, onExpand }) { websiteId={websiteId} limit={limit} dataFilter={deviceFilter} + renderLabel={({ x }) => getDeviceMessage(x)} onExpand={onExpand} /> ); diff --git a/components/metrics/WebsiteHeader.js b/components/metrics/WebsiteHeader.js index 71d0fa8a..7f34ca2b 100644 --- a/components/metrics/WebsiteHeader.js +++ b/components/metrics/WebsiteHeader.js @@ -1,17 +1,15 @@ import React from 'react'; import { FormattedMessage } from 'react-intl'; -import { useRouter } from 'next/router'; +import Link from 'components/common/Link'; import PageHeader from 'components/layout/PageHeader'; -import Button from 'components/common/Button'; import ActiveUsers from './ActiveUsers'; import Arrow from 'assets/arrow-right.svg'; import styles from './WebsiteHeader.module.css'; import RefreshButton from '../common/RefreshButton'; import ButtonLayout from '../layout/ButtonLayout'; +import Icon from '../common/Icon'; export default function WebsiteHeader({ websiteId, title, showLink = false }) { - const router = useRouter(); - return (
{title}
@@ -19,19 +17,14 @@ export default function WebsiteHeader({ websiteId, title, showLink = false }) { {showLink && ( - + + } size="small" /> + )}
diff --git a/components/metrics/WebsiteHeader.module.css b/components/metrics/WebsiteHeader.module.css index 99dbd8bc..71ff5b1b 100644 --- a/components/metrics/WebsiteHeader.module.css +++ b/components/metrics/WebsiteHeader.module.css @@ -4,8 +4,13 @@ line-height: var(--font-size-large); } -.button { +.link { font-size: var(--font-size-small); + font-weight: 600; +} + +.link svg { + margin-left: 10px; } @media only screen and (max-width: 576px) { diff --git a/components/settings/WebsiteSettings.js b/components/settings/WebsiteSettings.js index 3bcf6bb4..e38fd198 100644 --- a/components/settings/WebsiteSettings.js +++ b/components/settings/WebsiteSettings.js @@ -1,6 +1,7 @@ import React, { useState } from 'react'; import { FormattedMessage } from 'react-intl'; import classNames from 'classnames'; +import Link from 'components/common/Link'; import Table from 'components/common/Table'; import Button from 'components/common/Button'; import PageHeader from 'components/layout/PageHeader'; @@ -16,7 +17,7 @@ import Pen from 'assets/pen.svg'; import Trash from 'assets/trash.svg'; import Plus from 'assets/plus.svg'; import Code from 'assets/code.svg'; -import Link from 'assets/link.svg'; +import LinkIcon from 'assets/link.svg'; import useFetch from 'hooks/useFetch'; import styles from './WebsiteSettings.module.css'; @@ -34,7 +35,7 @@ export default function WebsiteSettings() { {row.share_id && (