mirror of
https://github.com/plausible/analytics.git
synced 2024-12-26 19:15:03 +03:00
3999f282a5
* extract blinkingDot function * position pulsating-circle with tailwind instead * remove unused function * extract renderStatName function * display seconds since last realtime update Adds a 'Last updated X seconds ago' label to the Current Visitors tooltip. * small refactor: avoid duplication of this.props and this.state * show the 'last updated ...' tooltip in historical * changelog update * use className utility function
389 lines
6.4 KiB
CSS
389 lines
6.4 KiB
CSS
/* purgecss start ignore */
|
|
@tailwind base;
|
|
@tailwind components;
|
|
|
|
/* purgecss end ignore */
|
|
@import "modal.css";
|
|
@import "loader.css";
|
|
@import "tooltip.css";
|
|
@import "flatpickr.css";
|
|
|
|
[x-cloak] { display: none; }
|
|
|
|
.button {
|
|
@apply inline-flex justify-center px-4 py-2 text-sm font-medium text-white bg-indigo-600 border border-transparent rounded-md leading-5 transition hover:bg-indigo-700 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-indigo-500;
|
|
}
|
|
|
|
.button[disabled] {
|
|
@apply bg-gray-400 dark:bg-gray-600;
|
|
}
|
|
|
|
.button-outline {
|
|
@apply text-indigo-600 bg-transparent border border-indigo-600;
|
|
}
|
|
|
|
.button-sm {
|
|
@apply px-4 py-2 text-sm;
|
|
}
|
|
|
|
.button-md {
|
|
@apply px-4 py-2;
|
|
}
|
|
|
|
html {
|
|
@apply text-gray-800;
|
|
}
|
|
|
|
body {
|
|
-webkit-font-smoothing: antialiased;
|
|
-moz-osx-font-smoothing: grayscale;
|
|
overflow-x: hidden;
|
|
}
|
|
|
|
button:disabled {
|
|
cursor: default;
|
|
}
|
|
|
|
blockquote {
|
|
@apply px-4 py-2 my-4 border-l-4 border-gray-500;
|
|
}
|
|
|
|
@screen xl {
|
|
.container {
|
|
max-width: 70rem;
|
|
}
|
|
}
|
|
|
|
.pricing-table {
|
|
height: 920px;
|
|
}
|
|
|
|
@screen md {
|
|
.pricing-table {
|
|
height: auto;
|
|
}
|
|
}
|
|
|
|
@tailwind utilities;
|
|
|
|
|
|
.main-graph {
|
|
position: relative;
|
|
height: 0;
|
|
|
|
/* Formula is: (top row height + (graph height / graph width * 100%) - adjustment for stat selectors) */
|
|
padding-top: calc(168px + (451 / 1088 * 100%) - 20px);
|
|
}
|
|
|
|
@screen sm {
|
|
.main-graph {
|
|
padding-top: calc(148px + (451 / 1088 * 100%));
|
|
}
|
|
}
|
|
|
|
@screen md {
|
|
.main-graph {
|
|
padding-top: calc(128px + (451 / 1088 * 100%));
|
|
}
|
|
}
|
|
|
|
@screen lg {
|
|
.main-graph {
|
|
padding-top: calc(28px + (451 / 1088 * 100%) - 10px);
|
|
}
|
|
}
|
|
|
|
.top-stats-only {
|
|
position: relative;
|
|
height: 0;
|
|
padding-top: calc(158px + 15px);
|
|
}
|
|
|
|
@screen sm {
|
|
.top-stats-only {
|
|
padding-top: calc(155px + 15px);
|
|
}
|
|
}
|
|
|
|
@screen md {
|
|
.top-stats-only {
|
|
padding-top: calc(168px + 15px);
|
|
}
|
|
}
|
|
|
|
@screen lg {
|
|
.top-stats-only {
|
|
padding-top: calc(75px + 15px);
|
|
}
|
|
}
|
|
|
|
.graph-inner {
|
|
position: absolute;
|
|
top: 0;
|
|
left: 0;
|
|
width: 100%;
|
|
height: auto;
|
|
}
|
|
|
|
.light-text {
|
|
color: #F0F4F8;
|
|
}
|
|
|
|
.transition {
|
|
transition: all .1s ease-in;
|
|
}
|
|
|
|
.pulsating-circle {
|
|
position: absolute;
|
|
width: 10px;
|
|
height: 10px;
|
|
}
|
|
|
|
.pulsating-circle::before {
|
|
content: '';
|
|
position: relative;
|
|
display: block;
|
|
width: 300%;
|
|
height: 300%;
|
|
box-sizing: border-box;
|
|
margin-left: -100%;
|
|
margin-top: -100%;
|
|
border-radius: 45px;
|
|
background-color: #9ae6b4;
|
|
animation: pulse-ring 3s cubic-bezier(0.215, 0.61, 0.355, 1) infinite;
|
|
@apply bg-green-500;
|
|
}
|
|
|
|
.pulsating-circle::after {
|
|
content: '';
|
|
position: absolute;
|
|
left: 0;
|
|
top: 0;
|
|
display: block;
|
|
width: 100%;
|
|
height: 100%;
|
|
background-color: white;
|
|
border-radius: 15px;
|
|
animation: pulse-dot 3s cubic-bezier(0.455, 0.03, 0.515, 0.955) -.4s infinite;
|
|
@apply bg-green-500;
|
|
}
|
|
|
|
|
|
@keyframes pulse-ring {
|
|
0% {
|
|
transform: scale(.33);
|
|
}
|
|
|
|
50% {
|
|
transform: scale(1);
|
|
}
|
|
|
|
40%, 100% {
|
|
opacity: 0;
|
|
}
|
|
}
|
|
|
|
@keyframes pulse-dot {
|
|
0% {
|
|
transform: scale(.8);
|
|
}
|
|
|
|
25% {
|
|
transform: scale(1);
|
|
}
|
|
|
|
50%, 100% {
|
|
transform: scale(.8);
|
|
}
|
|
}
|
|
|
|
.just-text h1, .just-text h2, .just-text h3 {
|
|
margin-top: 1em;
|
|
margin-bottom: .5em;
|
|
}
|
|
|
|
.just-text p {
|
|
margin-top: 0;
|
|
margin-bottom: 1rem;
|
|
}
|
|
|
|
.dropdown-content::before {
|
|
top: -16px;
|
|
right: 8px;
|
|
left: auto;
|
|
border: 8px solid transparent;
|
|
border-bottom-color: rgba(27,31,35,0.15);
|
|
}
|
|
|
|
.dropdown-content::before, .dropdown-content::after {
|
|
position: absolute;
|
|
display: inline-block;
|
|
content: "";
|
|
}
|
|
|
|
.dropdown-content::after {
|
|
top: -14px;
|
|
right: 9px;
|
|
left: auto;
|
|
border: 7px solid transparent;
|
|
border-bottom-color: #fff;
|
|
}
|
|
|
|
.feather {
|
|
height: 1em;
|
|
width: 1em;
|
|
overflow: visible;
|
|
display: inline;
|
|
}
|
|
|
|
.feather-sm {
|
|
height: 1em;
|
|
width: 1em;
|
|
overflow: visible;
|
|
display: inline;
|
|
}
|
|
|
|
.table-striped tbody tr:nth-child(odd) {
|
|
background-color: #f1f5f8;
|
|
}
|
|
|
|
.dark .table-striped tbody tr:nth-child(odd) {
|
|
background-color: rgb(37, 47, 63);
|
|
}
|
|
|
|
.dark .table-striped tbody tr:nth-child(even) {
|
|
background-color: rgb(26, 32, 44);
|
|
}
|
|
|
|
.stats-item {
|
|
min-height: 436px;
|
|
}
|
|
|
|
@screen md {
|
|
.stats-item {
|
|
margin-left: 6px;
|
|
margin-right: 6px;
|
|
width: calc(50% - 6px);
|
|
position: relative;
|
|
min-height: initial;
|
|
height: 27.25rem;
|
|
}
|
|
|
|
.stats-item-header {
|
|
height: inherit;
|
|
}
|
|
}
|
|
|
|
.stats-item:first-child {
|
|
margin-left: 0;
|
|
}
|
|
|
|
.stats-item:last-child {
|
|
margin-right: 0;
|
|
}
|
|
|
|
.fade-enter {
|
|
opacity: 0;
|
|
}
|
|
|
|
.fade-enter-active {
|
|
opacity: 1;
|
|
transition: opacity 100ms ease-in;
|
|
}
|
|
|
|
.flatpickr-calendar.static.open {
|
|
right: 2px;
|
|
top: 12px;
|
|
}
|
|
|
|
.datamaps-subunit {
|
|
cursor: pointer;
|
|
}
|
|
|
|
/* Only because the map handler doesn't expose an easier way to change the shadow color */
|
|
.dark .hoverinfo {
|
|
box-shadow: 1px 1px 5px rgb(26, 32, 44);
|
|
}
|
|
|
|
.fullwidth-shadow::before {
|
|
@apply absolute top-0 w-screen h-full bg-gray-50 dark:bg-gray-850;
|
|
|
|
box-shadow: 0 4px 2px -2px rgba(0, 0, 0, 0.06);
|
|
content: "";
|
|
z-index: -1;
|
|
left: calc(-1 * calc(50vw - 50%));
|
|
background-color: inherit;
|
|
}
|
|
|
|
.dark .fullwidth-shadow::before {
|
|
box-shadow: 0 4px 2px -2px rgba(200, 200, 200, 0.1);
|
|
}
|
|
|
|
iframe[hidden] {
|
|
display: none;
|
|
}
|
|
|
|
.pagination-link[disabled] {
|
|
@apply cursor-default bg-gray-100 dark:bg-gray-300 pointer-events-none;
|
|
}
|
|
|
|
@media (max-width: 768px) {
|
|
.flatpickr-wrapper {
|
|
position: absolute !important;
|
|
right: 0 !important;
|
|
left: 0 !important;
|
|
}
|
|
}
|
|
|
|
#chartjs-tooltip {
|
|
background-color: rgba(25, 30, 56);
|
|
position: absolute;
|
|
font-size: 14px;
|
|
font-style: normal;
|
|
padding: 10px 12px;
|
|
pointer-events: none;
|
|
border-radius: 5px;
|
|
z-index: 100;
|
|
}
|
|
|
|
.active-prop-heading {
|
|
/* Properties related to text-decoration are all here in one place. TailwindCSS does support underline but that's about it. */
|
|
text-decoration-line: underline;
|
|
text-decoration-color: #4338CA; /* tailwind's indigo-700 */
|
|
text-decoration-thickness: 2px;
|
|
}
|
|
|
|
@media (prefers-color-scheme: dark) {
|
|
.active-prop-heading {
|
|
text-decoration-color: #6366F1; /* tailwind's indigo-500 */
|
|
}
|
|
|
|
}
|
|
|
|
/* This class is used for styling embedded dashboards. Do not remove. */
|
|
/* stylelint-disable */
|
|
.date-option-group { }
|
|
|
|
|
|
.popper-tooltip {
|
|
background-color: rgba(25, 30, 56);
|
|
}
|
|
|
|
.tooltip-arrow,
|
|
.tooltip-arrow::before {
|
|
position: absolute;
|
|
width: 10px;
|
|
height: 10px;
|
|
background: inherit;
|
|
}
|
|
|
|
.tooltip-arrow {
|
|
visibility: hidden;
|
|
}
|
|
|
|
.tooltip-arrow::before {
|
|
visibility: visible;
|
|
content: '';
|
|
transform: rotate(45deg) translateY(1px);
|
|
}
|