mirror of
https://github.com/discourse/discourse.git
synced 2024-12-25 21:13:49 +08:00
f902e0fdd7
Some checks are pending
Licenses / run (push) Waiting to run
Linting / run (push) Waiting to run
Tests / ${{ matrix.target }} ${{ matrix.build_type }} (annotations, core) (push) Waiting to run
Tests / ${{ matrix.target }} ${{ matrix.build_type }} (backend, core) (push) Waiting to run
Tests / ${{ matrix.target }} ${{ matrix.build_type }} (backend, plugins) (push) Waiting to run
Tests / ${{ matrix.target }} ${{ matrix.build_type }} (frontend, plugins) (push) Waiting to run
Tests / ${{ matrix.target }} ${{ matrix.build_type }} (frontend, themes) (push) Waiting to run
Tests / ${{ matrix.target }} ${{ matrix.build_type }} (system, chat) (push) Waiting to run
Tests / ${{ matrix.target }} ${{ matrix.build_type }} (system, core) (push) Waiting to run
Tests / ${{ matrix.target }} ${{ matrix.build_type }} (system, plugins) (push) Waiting to run
Tests / ${{ matrix.target }} ${{ matrix.build_type }} (system, themes) (push) Waiting to run
Tests / core frontend (${{ matrix.browser }}) (Chrome) (push) Waiting to run
Tests / core frontend (${{ matrix.browser }}) (Firefox ESR) (push) Waiting to run
Tests / core frontend (${{ matrix.browser }}) (Firefox Evergreen) (push) Waiting to run
This PR: - Removes components from being displayed in the card - Adds a DMenu to house previous footer actions - Allows themes to be updated from this grid, with an animation and different border to show the update is happening - Stops position of cards changing when default changes - Fixes outline colour not changing when default changes - Show a global notice on the page when previewing a theme - Allows updating a theme from the grid, and showing an indicator of what theme needs to be updated - Moves "Set as default" to the dropdown for the theme - Show screenshot for theme if it is available - Prevent page reloading when updating the theme - Fixes theme install modal on grid page - Temporarily remove sorting of default theme to the top
177 lines
3.4 KiB
SCSS
177 lines
3.4 KiB
SCSS
@mixin theme-card-border($color) {
|
|
border-color: var(--#{$color}-medium);
|
|
box-shadow: 0px 0px 0px 3px var(--#{$color}-low);
|
|
}
|
|
|
|
.themes-cards-container {
|
|
display: grid;
|
|
grid-template-columns: repeat(auto-fill, minmax(300px, 1fr));
|
|
gap: 1em;
|
|
}
|
|
|
|
.theme-card {
|
|
display: flex;
|
|
flex-direction: column;
|
|
position: relative;
|
|
box-shadow: 0px 0px 0px 3px transparent;
|
|
transition: box-shadow 0.3s ease-in-out;
|
|
&.--updating {
|
|
animation: updating 3s ease-in-out 1,
|
|
updatingInfinite 3s ease-in-out 3s infinite;
|
|
@keyframes updating {
|
|
0% {
|
|
box-shadow: 0px 0px 0px 3px transparent;
|
|
border: 1px solid var(--success);
|
|
}
|
|
50% {
|
|
box-shadow: 0px 0px 0px 6px var(--success-low);
|
|
border: 1px solid var(--success);
|
|
}
|
|
100% {
|
|
box-shadow: 0px 0px 0px 3px var(--success-low);
|
|
border: 1px solid var(--success);
|
|
}
|
|
}
|
|
@keyframes updatingInfinite {
|
|
0% {
|
|
box-shadow: 0px 0px 0px 3px var(--success-low);
|
|
border: 1px solid var(--success);
|
|
}
|
|
50% {
|
|
box-shadow: 0px 0px 0px 6px var(--success-low);
|
|
border: 1px solid var(--success);
|
|
}
|
|
100% {
|
|
box-shadow: 0px 0px 0px 3px var(--success-low);
|
|
border: 1px solid var(--success);
|
|
}
|
|
}
|
|
}
|
|
&.--updating .d-icon-sync {
|
|
animation: rotate 3s linear infinite;
|
|
margin-right: 0.45em;
|
|
@keyframes rotate {
|
|
0% {
|
|
transform: rotate(0deg);
|
|
}
|
|
100% {
|
|
transform: rotate(360deg);
|
|
}
|
|
}
|
|
}
|
|
.admin-config-area-card__content {
|
|
display: flex;
|
|
flex-direction: column;
|
|
flex-grow: 1;
|
|
}
|
|
|
|
&.-active {
|
|
@include theme-card-border(tertiary);
|
|
}
|
|
|
|
&__update-available {
|
|
position: absolute;
|
|
right: -9px;
|
|
top: -9px;
|
|
color: var(--success);
|
|
font-size: var(--font-up-1);
|
|
background: var(--secondary);
|
|
display: flex;
|
|
}
|
|
|
|
&__icons {
|
|
display: flex;
|
|
}
|
|
|
|
&__image-wrapper {
|
|
width: 100%;
|
|
height: 160px;
|
|
overflow: hidden;
|
|
|
|
svg {
|
|
width: 100%;
|
|
top: 0;
|
|
left: 0;
|
|
}
|
|
}
|
|
|
|
&__image {
|
|
width: 100%;
|
|
height: 100%;
|
|
object-fit: cover;
|
|
object-position: top left;
|
|
border-radius: calc(var(--d-border-radius) + 1px);
|
|
}
|
|
|
|
.ember-checkbox {
|
|
margin: 0 5px 0 0;
|
|
}
|
|
|
|
&__checkbox-label {
|
|
margin: 0;
|
|
font-weight: 400;
|
|
}
|
|
|
|
&__content {
|
|
padding: 10px 0;
|
|
}
|
|
|
|
&__description {
|
|
margin: 0 0 10px 0;
|
|
}
|
|
|
|
&__components {
|
|
display: -webkit-box;
|
|
font-size: var(--font-down-1);
|
|
color: var(--primary-high);
|
|
-webkit-box-orient: vertical;
|
|
overflow: hidden;
|
|
-webkit-line-clamp: 3;
|
|
}
|
|
|
|
&__install-button {
|
|
margin-top: auto;
|
|
}
|
|
|
|
&__footer {
|
|
margin-top: auto;
|
|
display: flex;
|
|
}
|
|
|
|
&__footer-actions {
|
|
margin-left: auto;
|
|
}
|
|
|
|
.admin-config-area-card__header-action {
|
|
display: flex;
|
|
justify-content: center;
|
|
align-items: center;
|
|
background-color: var(--secondary);
|
|
right: 20px;
|
|
top: 22px;
|
|
}
|
|
}
|
|
|
|
.admin-config-area-card.theme-card
|
|
.admin-config-area-card__content
|
|
.external-resources {
|
|
display: flex;
|
|
justify-content: space-between;
|
|
flex-direction: column;
|
|
font-size: var(--font-down-1);
|
|
margin-bottom: 10px;
|
|
|
|
.external-link {
|
|
margin-bottom: 0.25em;
|
|
color: var(--primary);
|
|
text-decoration: underline;
|
|
}
|
|
}
|
|
|
|
.theme-card .admin-config-area-card {
|
|
&__title {
|
|
display: flex;
|
|
align-items: center;
|
|
}
|
|
}
|