Files
AstralRinth/assets/styles/components.scss
Geometrically 673f7a82d1 New features (#592)
* New features

* Lots of bug fixes

* Fix respack creation

* Improve mobile nav with more project types

* Fix resolution sorting and remove icons

* Move cookie consent to top on small devices to get out of the way of navigation

* Move cookie consent + fix hydration

* Fix project editing + update search features

* Centralize hardcoding of loader/category names, fix cookie consent shadow, fix mobile navbar rounding

* Fix plugin platforms formatting

* Kitchen sink!

* Add support for display names

* LiteLoader formatting

* Fixed "show all loaders" toggle not resetting when changing pages

* Allow multiple loaders in version filter controls

* Fix clear filters button

* Revert "Add support for display names"

This reverts commit 370838763d86bcae51bf06c304248f7a1f8fc28f.

* Let's see how this goes. Upstream filters, attempt 1

* github? hello?

* No more "Server mod" on plugins

* Fix formatting of project types in project creation

* Move where project creation sets the resource pack loader

* Allow setting pixelated image-rendering

Allows to apply 'style' attribute to IMG tags with value
'image-rendering' set to 'pixelated', which can be useful for people who
use pixel art in their READMEs (to demonstrate items, for example).

* fix user page + hydration issue fix from Brawaru

* Rename to proxies

* Make categories use title case

* Always show project type on moderation page, improve project type display on project pages

* Remove invalid key

* Missed a check

* Fix browse menu animation

* Fix disabled button condition and minimum width for 2 lines

* Body -> Description in edit pages

* More casing consistency issues

* Fix duplicate version URLs

* Fix version creation

* Edit URLs, fix privacy page buttons

* Fix notifications popup overlaying

* Final merge fixes

Co-authored-by: Prospector <prospectordev@gmail.com>
Co-authored-by: Sasha Sorokin <10401817+Brawaru@users.noreply.github.com>
2022-08-14 12:42:58 -07:00

913 lines
17 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;
position: relative;
&:hover:not([disabled]):not(:focus-within) {
input:not(:focus) {
background-color: var(--color-button-bg-hover);
color: var(--color-button-text-hover);
border-color: var(--color-divider-dark);
}
svg {
color: var(--color-button-text-hover);
}
}
&:focus-within {
input {
outline: none !important;
border-color: var(--color-brand);
}
svg {
color: var(--color-button-text-active) !important;
}
}
input {
padding-left: 2rem;
width: 100%;
}
svg {
position: absolute;
left: 0.6rem;
height: 1rem;
z-index: 1;
color: var(--color-text);
margin-right: -2rem;
}
}
.iconified-button {
display: flex;
padding: 0.25rem 1rem;
margin: 0 0.25rem 0 0;
font-size: var(--font-size-nm);
align-items: center;
cursor: pointer;
box-shadow: inset 0px -1px 1px rgba(17, 24, 39, 0.1);
color: var(--color-button-text);
background-color: var(--color-button-bg);
text-decoration: none;
border-radius: 2rem;
&:hover,
&:focus-visible {
background-color: var(--color-button-bg-hover);
color: var(--color-button-text-hover);
}
&:active {
background-color: var(--color-button-bg-active);
color: var(--color-button-text-active);
}
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 {
color: var(--color-link);
text-decoration: underline;
&:focus-visible,
&:hover {
color: var(--color-link-hover);
}
&:active {
color: var(--color-link-active);
}
}
.title-link {
text-decoration: underline;
&:focus-visible,
&:hover {
color: var(--color-heading);
}
&:active {
color: var(--color-text-dark);
}
}
.markdown-body {
blockquote,
details,
dl,
ol,
p,
code,
pre,
table,
ul {
margin-top: 0;
margin-bottom: 16px;
}
li,
p {
padding: 0;
line-height: 1.5;
word-wrap: break-word;
overflow-wrap: anywhere;
}
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);
&:focus-visible,
&:hover {
color: var(--color-link-hover);
}
&:active {
color: var(--color-link-active);
}
}
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;
}
@media screen and (max-width: 850px) {
iframe {
aspect-ratio: 16 / 9;
width: 100%;
height: auto;
}
}
}
.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;
}
}
.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);
font-size: var(--font-size-nm);
&:focus-visible,
&:hover {
background-color: var(--color-button-bg-hover);
}
&:active {
background-color: var(--color-button-bg-active);
}
&:disabled,
&[disabled] {
background-color: transparent;
box-shadow: inset 0 0 0 1px var(--color-button-bg-disabled);
color: var(--color-button-text-disabled);
pointer-events: none;
cursor: default;
}
}
.transparent-button {
border-radius: var(--size-rounded-control);
color: var(--color-text);
background-color: transparent;
&:focus-visible,
&:hover,
&.selected,
&.nuxt-link-exact-active,
&.active-path {
color: var(--color-transparent-button-text-hover);
background-color: var(--color-transparent-button-bg-hover);
}
&:active {
color: var(--color-transparent-button-text-active);
background-color: var(--color-transparent-button-bg-active);
}
margin: auto 0;
padding: 6px 20px;
text-decoration: underline;
}
.brand-button {
@extend .button;
color: var(--color-brand-inverted);
background-color: var(--color-brand);
&:focus-visible,
&:hover {
background-color: var(--color-brand-hover);
color: var(--color-brand-inverted);
}
&:active {
background-color: var(--color-brand-active);
color: var(--color-brand-inverted);
}
}
.brand-button-colors {
box-shadow: inset 0px -1px 1px rgba(0, 0, 0, 0.25);
color: var(--color-brand-inverted);
background-color: var(--color-brand);
&:focus-visible,
&: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;
border-top-left-radius: var(--size-rounded-card) !important;
border-top-right-radius: var(--size-rounded-card) !important;
}
.known-error .multiselect__tags {
border-color: var(--color-badge-red-bg) !important;
background-color: var(--color-warning-bg) !important;
&::placeholder {
color: var(--color-warning-text);
}
}
.multiselect {
color: var(--color-text) !important;
input {
background: transparent;
}
input::placeholder {
color: var(--color-text);
}
.multiselect__tags {
border-radius: 1.25rem;
background: var(--color-dropdown-bg);
border: none;
cursor: pointer;
padding-left: 1rem;
padding-top: 10px;
&:active,
&:hover {
background: var(--color-button-bg-hover);
.multiselect__spinner {
background: var(--color-button-bg-hover);
}
}
.multiselect__single {
background: transparent;
}
.multiselect__tag {
border-radius: 2rem;
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__placeholder {
color: var(--color-text);
font-size: 16px;
line-height: 20px;
}
}
.multiselect__content-wrapper {
background: var(--color-dropdown-bg);
border: none;
overflow-x: hidden;
border-bottom-left-radius: var(--size-rounded-card);
border-bottom-right-radius: var(--size-rounded-card);
.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);
}
}
&.multiselect--disabled {
background: none;
.multiselect__current,
.multiselect__select {
background: none;
}
}
}
label {
display: flex;
flex-direction: column;
@media screen and (min-width: 1024px) {
flex-direction: row;
align-items: center;
}
span {
flex: 2;
padding-right: var(--spacing-card-lg);
&.no-padding {
padding-right: 0;
}
}
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; Bad for accessibility
}
}
.stylized-toggle {
min-height: 32px;
height: 32px;
width: 52px;
max-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);
}
}
.download-button {
display: flex;
align-items: center;
height: 1.75rem;
width: 1.75rem;
border-radius: 1.5rem;
color: var(--color-brand-inverted);
background-color: var(--color-brand);
margin-right: var(--spacing-card-sm);
&:hover {
background-color: var(--color-brand-hover);
}
&:active {
background-color: var(--color-brand-active);
}
svg {
width: 1.25rem;
margin: auto;
}
flex-shrink: 0;
}
.textarea-wrapper {
display: flex;
flex-direction: column;
align-items: stretch;
textarea {
border-radius: var(--size-rounded-sm);
flex: 1;
overflow-y: auto;
resize: none;
max-width: 100%;
}
}
.styled-tabs {
align-items: center;
display: flex;
flex-wrap: wrap;
row-gap: var(--spacing-card-sm);
font-weight: bold;
color: var(--color-text-inactive);
overflow-x: scroll;
scrollbar-width: none;
&::-webkit-scrollbar {
display: none;
}
.tab {
padding: 0;
margin-right: var(--spacing-card-bg);
&:last-child {
margin-right: 0;
}
span {
font-weight: bold;
display: inline-block;
padding-bottom: 6px;
position: relative;
}
span::before {
background-color: transparent;
content: '';
position: absolute;
width: 60%;
height: 4px;
bottom: 0;
left: 20%;
border-radius: var(--size-rounded-max);
}
&:hover,
&:focus {
color: var(--color-text);
span::before {
background-color: var(--tab-underline-hovered);
}
}
&.nuxt-link-active,
&.selected {
color: var(--color-text);
span::before {
background-color: var(--color-brand);
box-shadow: 0 0 1px 0 var(--color-brand);
}
}
}
.right {
margin-left: auto;
}
}
.error {
display: flex;
flex-direction: column;
width: 100%;
justify-content: center;
align-items: center;
.icon {
width: 8rem;
height: 8rem;
margin: 1.5rem 0;
}
.text {
margin-bottom: 2rem;
font-size: 1.25rem;
text-align: center;
}
.link {
text-decoration: underline;
}
}
.card {
min-height: var(--font-size-2xl);
padding: var(--spacing-card-md) var(--spacing-card-lg);
background: var(--color-raised-bg);
border-radius: var(--size-rounded-card);
margin-bottom: var(--spacing-card-md);
// box-shadow: var(--shadow-card);
&.warning {
border-left: 0.5rem solid var(--color-banner-side);
padding: 1.5rem;
line-height: 1.5;
background-color: var(--color-banner-bg);
color: var(--color-banner-text);
min-height: 0;
a {
/* Uses active color to increase contrast */
color: var(--color-link-active);
text-decoration: underline;
}
}
}
.vue-notification {
background: #44a4fc;
border-left: 5px solid #44a4fc;
&.success {
background: #68cd86;
border-left-color: #68cd86;
}
&.warn {
background: #ffb648;
border-left-color: #ffb648;
}
&.error {
background: #e54d42;
border-left-color: #e54d42;
}
}
.vue-notification-group {
right: 25px !important;
bottom: 25px !important;
.vue-notification-wrapper {
margin-bottom: 10px;
.vue-notification-template {
border-radius: var(--size-rounded-card);
margin: 0;
.notification-title {
font-size: var(--font-size-lg);
margin-right: auto;
}
.notification-content {
font-size: var(--font-size-md);
}
}
&:last-child {
margin: 0;
}
}
@media screen and (max-width: 750px) {
transition: bottom 0.25s ease-in-out;
bottom: calc(var(--size-mobile-navbar-height) + 10px) !important;
&.browse-menu-open {
bottom: calc(var(--size-mobile-navbar-height-expanded) + 10px) !important;
}
}
}
.card-divider {
background-color: var(--color-divider);
border: none;
color: var(--color-divider);
height: 1px;
margin: var(--spacing-card-bg) 0;
}
input.known-error,
textarea.known-error {
border-color: var(--color-badge-red-bg) !important;
background-color: var(--color-warning-bg) !important;
&::placeholder {
color: var(--color-warning-text);
}
}
.known-errors {
color: var(--color-badge-red-bg);
}