mirror of
https://github.com/plausible/analytics.git
synced 2024-12-01 20:27:17 +03:00
97b24c0492
* Add SSO link with signed JWT token * Falls back to Nolt URL without SSO if token cannot be generated * Add profile image (gravatar) to Nolt SSO link * Improve navbar dropdown * Add 'contact support' link to nav dropdown * Add CSS rule to prevent horizontal jumps * Dark mode styling * Close dropdown when link is clicked * Clarify links in dropdown * Clarify CSS comment * Use Alpine.data() over window * Rename suggestions_dropdown -> combo-box * Mix format * Make logout link look good on dark mode * Use proxy for gravatar * Do not use Gravatar proxy in self-hosted * Changelog * Add Github Repo link to nav dropdown * Make dialyzer happy * Add proxy for Gravatar * Update assets/css/app.css Co-authored-by: hq1 <hq@mtod.org> * Update lib/plausible_web/controllers/avatar_controller.ex Co-authored-by: hq1 <hq@mtod.org> * Fix alpine <> Liveview integration --------- Co-authored-by: hq1 <hq@mtod.org>
332 lines
5.6 KiB
CSS
332 lines
5.6 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-outline:hover {
|
|
@apply text-white;
|
|
}
|
|
|
|
.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;
|
|
width:100vw; /* Prevents content from jumping when scrollbar is added/removed due to vertical overflow */
|
|
overflow-x: hidden;
|
|
}
|
|
|
|
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;
|
|
|
|
|
|
.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);
|
|
}
|