Modrinth/assets/styles/components.scss
apersomany 5ccd40f530
Fixed minor issues (#291)
* Fixed xss sanitizer config for checkboxes

* Fixed typo in version navigation tree href

* Fixed navigation tabs' margins with pure css

* Prettier

For some weird reason my prettier config seems to be different

Co-authored-by: Redblueflame <contact@redblueflame.com>
2021-08-23 14:39:03 +02:00

600 lines
11 KiB
SCSS
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

// Here lies 𝖄𝖊 𝕸𝖆𝖗𝖌𝖎𝖓 𝕸𝖆𝖌𝖎𝖈
// which allows to have just one wrapper div
.iconified-input {
align-items: center;
display: inline-flex;
flex-direction: row-reverse;
input {
padding-left: 2.5rem;
}
svg {
color: var(--color-icon);
margin-right: -2rem;
}
}
.iconified-button {
padding: 0.25rem 0.5rem;
font-size: var(--font-size-sm);
display: flex;
align-items: center;
color: var(--color-button-text);
background-color: var(--color-button-bg);
border-radius: var(--size-rounded-control);
&:hover,
&:focus {
background-color: var(--color-button-bg-hover);
}
svg {
width: 1.25rem;
margin-right: 0.5rem;
}
}
.badge {
max-height: 1rem;
border-radius: 1rem;
font-size: var(--font-size-xs);
font-weight: bold;
letter-spacing: 0.02rem;
padding: 0.25rem 0.5rem;
&.gray {
background-color: var(--color-badge-gray-bg);
color: var(--color-badge-gray-text);
}
&.red {
background-color: var(--color-badge-red-bg);
color: var(--color-badge-red-text);
}
&.green {
background-color: var(--color-badge-green-bg);
color: var(--color-badge-green-text);
}
&.yellow {
background-color: var(--color-badge-yellow-bg);
color: var(--color-badge-yellow-text);
}
}
.text-link {
text-decoration: underline;
}
.required:after {
content: ' *';
color: red;
}
.markdown-body {
blockquote,
details,
dl,
ol,
p,
code,
pre,
table,
ul {
margin-top: 0;
margin-bottom: 16px;
}
p {
padding: 0;
line-height: 1.5;
word-wrap: break-word;
}
h1,
h2 {
padding: 10px 0 5px;
border-bottom: 1px solid var(--color-header-underline);
}
blockquote {
padding: 0 1em;
color: var(--color-text);
border-left: 0.25em solid var(--color-block-quote);
}
a {
color: var(--color-link);
}
img {
max-width: 100%;
height: auto;
}
pre {
margin-top: 1rem;
padding: 14px;
border-radius: var(--size-rounded-control);
background-color: var(--color-code-bg);
overflow-x: auto;
code {
font-size: 80%;
padding: 0;
border-radius: 0;
}
}
code {
padding: 0.2em 0.4em;
font-size: 80%;
border-radius: var(--size-rounded-control);
background-color: var(--color-code-bg);
color: var(--color-code-text);
}
hr {
margin: 20px 0;
color: var(--color-divider);
}
table {
display: block;
width: max-content;
max-width: 100%;
overflow: auto;
border-collapse: collapse;
line-height: 1.5;
th {
font-weight: 600;
}
td,
th {
padding: 0.4rem 0.85rem;
border: 0.1rem solid var(--color-table-border);
}
tr:nth-child(2n) {
background-color: var(--color-table-alternate-row);
}
}
details {
border: 0.15rem solid var(--color-button-bg);
border-radius: var(--size-rounded-control);
padding: 0.5rem 0.5rem 0;
summary {
font-weight: bold;
margin: -0.5rem -0.5rem 0;
padding: 0.5rem 0.8rem;
cursor: pointer;
background-color: var(--color-button-bg);
&:hover {
background-color: var(--color-button-bg-hover);
}
}
&[open] {
padding: 0.5rem;
summary {
margin-bottom: 0.5rem;
}
}
}
> :last-child {
margin-bottom: 0 !important;
}
}
.tooltip {
display: block !important;
z-index: 10000;
.tooltip-inner {
background: var(--color-tooltip-bg);
color: var(--color-tooltip-text);
padding: 5px 10px 4px;
border-radius: var(--size-rounded-tooltip);
box-shadow: var(--shadow-tooltip);
font-size: 0.9rem;
}
.tooltip-arrow {
width: 0;
height: 0;
border-style: solid;
position: absolute;
margin: 5px;
border-color: var(--color-tooltip-bg);
z-index: 1;
}
&[x-placement^='top'] {
margin-bottom: 5px;
.tooltip-arrow {
border-width: 5px 5px 0 5px;
border-left-color: transparent !important;
border-right-color: transparent !important;
border-bottom-color: transparent !important;
bottom: -5px;
left: calc(50% - 5px);
margin-top: 0;
margin-bottom: 0;
}
}
&[x-placement^='bottom'] {
margin-top: 5px;
.tooltip-arrow {
border-width: 0 5px 5px 5px;
border-left-color: transparent !important;
border-right-color: transparent !important;
border-top-color: transparent !important;
top: -5px;
left: calc(50% - 5px);
margin-top: 0;
margin-bottom: 0;
}
}
&[x-placement^='right'] {
margin-left: 5px;
.tooltip-arrow {
border-width: 5px 5px 5px 0;
border-left-color: transparent !important;
border-top-color: transparent !important;
border-bottom-color: transparent !important;
left: -5px;
top: calc(50% - 5px);
margin-left: 0;
margin-right: 0;
}
}
&[x-placement^='left'] {
margin-right: 5px;
.tooltip-arrow {
border-width: 5px 0 5px 5px;
border-top-color: transparent !important;
border-right-color: transparent !important;
border-bottom-color: transparent !important;
right: -5px;
top: calc(50% - 5px);
margin-left: 0;
margin-right: 0;
}
}
&[aria-hidden='true'] {
visibility: hidden;
opacity: 0;
transition: opacity 0.15s, visibility 0.15s;
}
&[aria-hidden='false'] {
visibility: visible;
opacity: 1;
transition: opacity 0.15s;
}
}
.tabs {
display: flex;
padding: 0.5rem 1rem;
.filler {
flex-grow: 1;
}
}
.tabs a.tab {
user-select: none;
display: flex;
align-items: center;
padding: 0.5rem 0.25rem 0.2rem;
margin: auto 0.5rem;
span {
border-bottom: 3px solid transparent;
}
svg {
width: 1rem;
height: 1rem;
margin-right: 0.4rem;
}
&:hover,
&:focus {
color: var(--color-text-medium);
span {
border-bottom: 3px solid var(--color-brand-disabled);
}
}
&.nuxt-link-exact-active,
&.active-path {
color: var(--color-text-dark);
span {
border-bottom: 3px solid var(--color-brand);
}
}
}
.sidebar {
.card {
padding: var(--spacing-card-md);
margin-bottom: var(--spacing-card-md);
@extend %card;
&.page-nav {
.tab {
padding: var(--spacing-card-sm);
display: flex;
align-items: center;
border-radius: var(--size-rounded-control);
margin-bottom: 0.5rem;
@extend %transparent-clickable;
svg {
color: var(--color-icon);
margin-right: 5px;
height: 1.25rem;
flex-shrink: 0;
}
&.nuxt-link-exact-active,
&.active-path {
svg {
color: var(--color-brand-light);
}
}
}
.tab:last-child {
margin-bottom: 0;
}
}
}
@media screen and (min-width: 1024px) {
width: 300px;
}
}
.sidebar-l {
@extend .sidebar;
@media screen and (min-width: 1024px) {
margin-right: var(--spacing-card-lg);
}
}
.sidebar-r {
@extend .sidebar;
margin-left: var(--spacing-card-lg);
}
.button {
//width: max-content;
margin: auto 0;
padding: 6px 20px;
border-radius: var(--size-rounded-control);
color: var(--color-button-text);
background-color: var(--color-button-bg);
font-weight: var(--font-weight-medium);
&:focus,
&:hover {
background-color: var(--color-button-bg-hover);
}
&:active {
background-color: var(--color-button-bg-active);
}
}
.transparent-button {
@extend %transparent-clickable;
margin: auto 0;
padding: 6px 20px;
text-decoration: underline;
}
.brand-button {
@extend .button;
color: var(--color-brand-inverted);
background-color: var(--color-brand);
&:focus,
&:hover {
background-color: var(--color-brand-hover);
color: var(--color-brand-inverted);
}
&:active {
background-color: var(--color-brand-active);
color: var(--color-brand-inverted);
}
}
.multiselect--above .multiselect__content-wrapper {
border-top: none !important;
}
.multiselect {
color: var(--color-text) !important;
input {
background: transparent;
}
.multiselect__tags {
background: var(--color-dropdown-bg);
border: none;
cursor: pointer;
&:active,
&:hover {
background: var(--color-button-bg-hover);
.multiselect__spinner {
background: var(--color-button-bg-hover);
}
}
.multiselect__single {
background: transparent;
}
.multiselect__tag {
color: var(--color-text-dark);
background: transparent;
border: 2px solid var(--color-brand);
}
.multiselect__tag-icon {
background: transparent;
&:after {
color: var(--color-text-dark);
}
}
}
.multiselect__content-wrapper {
background: var(--color-dropdown-bg);
border: none;
.multiselect__element {
.multiselect__option--highlight {
background: var(--color-button-bg-active);
color: var(--color-text-dark);
}
.multiselect__option--selected {
background: var(--color-brand);
font-weight: bold;
color: var(--color-brand-inverted);
}
}
}
.multiselect__spinner {
background: var(--color-dropdown-bg);
&:active,
&:hover {
background: var(--color-button-bg-hover);
}
}
}
.section-header {
@extend %card;
padding: var(--spacing-card-md) var(--spacing-card-lg);
margin-bottom: var(--spacing-card-md);
h3 {
margin: auto 0;
color: var(--color-text-dark);
font-weight: var(--font-weight-extrabold);
}
}
label {
display: flex;
flex-direction: column;
@media screen and (min-width: 1024px) {
flex-direction: row;
}
span {
flex: 2;
padding-right: var(--spacing-card-lg);
}
input,
.multiselect,
.input-group {
flex: 3;
height: fit-content;
}
input[type='button'] {
height: fit-content;
flex: 1;
}
input[type='button']:hover {
cursor: pointer;
}
div,
a {
height: fit-content;
flex: 1;
}
div:hover {
cursor: pointer;
}
}
.input-group {
display: flex;
flex-direction: column;
* {
margin-bottom: var(--spacing-card-sm);
}
}
.switch {
-webkit-appearance: none;
-moz-appearance: none;
appearance: none;
-webkit-tap-highlight-color: transparent;
cursor: pointer;
&:focus {
outline: 0;
}
}
.stylized-toggle {
height: 32px;
width: 52px;
border-radius: 16px;
display: inline-block;
position: relative;
margin: 0;
border: 2px solid var(--color-button-bg);
transition: all 0.2s ease;
background: var(--color-button-bg);
&:after {
content: '';
position: absolute;
top: 2px;
left: 2px;
width: 24px;
height: 24px;
border-radius: 50%;
background: white;
box-shadow: 0 1px 2px rgba(44, 44, 44, 0.2);
transition: all 0.2s cubic-bezier(0.5, 0.1, 0.75, 1.35);
}
&:checked {
background: var(--color-brand);
border: 2px solid var(--color-brand);
&:after {
transform: translatex(20px);
}
}
&:hover &:focus {
background: var(--color-button-bg);
border: 2px solid var(--color-button-bg);
}
&:hover:checked &:focus:checked {
background: var(--color-brand);
border: 2px solid var(--color-brand);
}
}