From 75a097a018a0090f5902758353c578fce4aa2a25 Mon Sep 17 00:00:00 2001
From: Jake Vanderwerf <get@jakevanderwerf.ca>
Date: Sat, 23 May 2026 18:43:42 +0000
Subject: [PATCH] =CustomBlocks.php overhaul relatively complete. Also refactored the gallery in gallery.min.js and the jvbRenderGallery.
---
src/feed/style.scss | 1452 +++++++++++++++++++++++++++++++++++----------------------
1 files changed, 892 insertions(+), 560 deletions(-)
diff --git a/src/feed/style.scss b/src/feed/style.scss
index ed5cff5..38f7b0f 100644
--- a/src/feed/style.scss
+++ b/src/feed/style.scss
@@ -1,265 +1,816 @@
+//.feed-block {
+// max-width: var(--full);
+// margin: 0 auto;
+//
+// &:target {
+// scroll-snap-margin-top: 5rem;
+// scroll-margin-top: 5rem;
+// outline: 0;
+// border-radius: 0;
+// padding: 0;
+//
+// .feed-item {
+// outline: double var(--pink-0);
+// }
+// }
+//}
+//
+//.loading .feed-block {
+// opacity: .7;
+//}
+//
+//.label {
+// display: flex;
+// align-items: center;
+// gap: .25rem;
+// font-size: .9rem;
+// a:hover {
+// color: var(--pink-0);
+// }
+//}
+//
+///** Filters Form **/
+//.feed-filters {
+// margin: 2rem 0;
+// position: sticky;
+// top: 3rem;
+// z-index: 15;
+// background: rgba(var(--base),var(--op-6));
+// padding: .25rem 3rem;
+// details[open] summary {
+// background-color: var(--overlay);
+// }
+// summary {
+// justify-content: flex-start;
+//
+// > * {
+// order: 3;
+// }
+// .label {
+// order: 1;
+// }
+// .filter-label {
+// order: 2;
+// }
+// &::after {
+// order: 4;
+// }
+// #favourites + label {
+// margin-left: auto;
+// }
+// #favourites + label:hover,
+// #favourites:checked + label {
+// border-color: var(--pink-0);
+// background-color: var(--pink-0);
+// color: var(--white);
+//
+// }
+// #favourites:checked + label {
+// animation: pop 0.4s cubic-bezier(0.25, 0.46, 0.45, 0.94);
+// }
+// }
+//
+// details[open],
+// summary:hover {
+// background-color: rgba(var(--base),var(--op-6));
+// }
+//
+// &:has(#favourites) {
+// summary::after {
+// margin-left: 1rem;
+// }
+// }
+//}
+//summary > * {
+// order: 3;
+//}
+//summary .label {
+// order: 1;
+//}
+//.filter-label {
+// display: inline-block;
+// vertical-align: middle;
+// height: 1.3em;
+// order: 2;
+// margin: 0;
+// padding: 0;
+//
+// li {
+// list-style: none;
+// height: 0;
+// overflow: hidden;
+// &.active {
+// height: 100%;
+// }
+// }
+//}
+//.filter-group {
+// display: flex;
+// align-items: center;
+// gap: .5rem;
+// flex-wrap: wrap;
+// label {
+// font-weight: 100;
+// }
+// &:has(.order-by) {
+// justify-content: space-between;
+// }
+// .order-by,
+// .order-direction {
+// display: flex;
+// flex-wrap: wrap;
+// gap: .5rem;
+// flex: 1;
+// justify-content: flex-start;
+// .label {
+// width: 100%;
+// }
+//
+// label:has(.label) {
+// padding: 0 .35rem;
+// gap: .5rem;
+// .label {
+// font-size: 1rem;
+// }
+// }
+// }
+//}
+//.filter-group >.label {
+// width: 100%;
+//}
+//
+///**
+//Feed Grid
+// */
+//.feed-grid {
+// display: grid;
+// grid-template-columns: repeat(auto-fit, minmax(250px, 1fr));
+// gap: .5rem;
+// margin-bottom: 2rem;
+// padding: 0 4rem;
+// --delay: 0s;
+// --increase: .1s;
+//}
+//.feed-empty-state {
+// grid-column: 1/-1;
+// text-align: center;
+// padding: 2rem;
+// background: rgb(var(--base-100));
+// border-radius: var(--radius);
+// margin: 0 auto;
+// max-width: 600px;
+//}
+///**
+//Placeholders
+// */
+//.placeholder {
+// aspect-ratio: 1;
+// background: rgb(var(--base));
+// border: 1rem solid rgb(var(--base-50));
+// border-radius: 1rem;
+// display: flex;
+// justify-content: center;
+// align-items: center;
+//
+// .icon {
+// --w: 50%;
+// color: rgb(var(--base-200));
+// animation: dance 2.5s ease-in-out infinite;
+//
+// }
+//}
+//
+///**
+//Feed Items
+// */
+//.feed-item {
+// position: relative;
+// border-radius: 0.5rem;
+// overflow: hidden;
+// background: rgb(var(--base-50));
+// box-shadow: 0 2px 4px rgba(0,0,0,0.1);
+// opacity: 0;
+// transition: opacity var(--trans-base) var(--delay);
+// height: fit-content;
+// padding: 0;
+//
+// img {
+// opacity: .7;
+// filter: grayscale(.5) sepia(.3) blur(7px);
+// }
+// &[data-loaded=true] {
+// img {
+// opacity: 1;
+// filter: none;
+// }
+// }
+//
+// a {
+// &::before,
+// &::after {
+// display: none;
+// }
+// }
+// details a {
+// font-size: clamp(1rem, 0.9306rem + 0.2222vw, 1.125rem);
+// }
+//
+// &[data-loaded] {
+// opacity: 1;
+// + [data-loaded] {
+// --delay: var(--delay) + var(--increase);
+// }
+// }
+//
+// &.highlighted {
+// box-shadow: 0 0 0 4px #FF0080, 0 8px 16px rgba(0, 0, 0, 0.1);
+// animation: highlight-puls 2s ease-in-out;
+// }
+// &[open],
+// &:hover {
+// .handle {
+// background-color: var(--overlay-pink-medium);
+// backdrop-filter: blur(5px);
+// }
+// }
+// summary {
+// width: calc(100% - 1rem);
+// height: 100%;
+// aspect-ratio: 1;
+// .handle {
+// position: absolute;
+// bottom: 0;
+// left: 0;
+// right: 0;
+// background-color: rgba(var(--base),var(--op-3));
+// backdrop-filter: blur(5px);
+// border-radius: var(--radius);
+// z-index: 1;
+// padding: .25rem .25rem .25rem 1.1rem;
+// }
+// &::after {
+// z-index: 11;
+// position: absolute;
+// bottom: .35rem;
+// right: .7rem;
+// width: 1.5rem;
+// height: 1.5rem;
+// cursor: pointer;
+// }
+// }
+//
+// label {
+// font-weight: normal;
+// text-transform: none;
+// .icon {
+// --w: 1.5em;
+// }
+// }
+//}
+///**
+//Load More Button
+// */
+//.load-more {
+// opacity: 1;
+// margin: 1rem auto;
+// width: 66.666%;
+// display: flex;
+// align-items: center;
+// gap: .5rem;
+// padding: .75rem 1.5rem;
+// background: rgb(var(--base));
+// color: rgb(var(--contrast));
+// border-radius: 4px;
+// font-size: var(--txt-medium);
+// transition: all var(--trans-base);
+// border: 2px solid transparent;
+// &[hidden] {
+// opacity: 0;
+// transition: all var(--trans-base);
+// }
+// &:hover {
+// background: var(--pink-50);
+// border-color: rgb(var(--contrast));
+// color: var(--white);
+// }
+//}
+///**
+//favourite button
+// */
+//button.favourite {
+// position: absolute;
+// top: .5rem;
+// right: .5rem;
+// z-index: 10;
+// background: rgba(var(--base),var(--op-4));
+// border-radius: 50%;
+// box-shadow: rgba(var(--base),var(--op-45)) var(--shdw-subtle);
+// border: none;
+// width: 2rem;
+// height: 2rem;
+// display: flex;
+// justify-content: center;
+// align-items: center;
+// backdrop-filter: blur(5px);
+// transition: all var(--trans-base);
+//
+// &:hover {
+// transform: scale(1.1);
+// color: var(--pink-0);
+// background: rgb(var(--base));
+// box-shadow: 0 4px 8px rgba(0,0,0,0.15);
+// }
+//
+// &.favourited {
+// animation: pop 0.4s cubic-bezier(0.25, 0.46, 0.45, 0.94);
+// }
+//}
+//
+//
+///** Images **/
+//.feed-image {
+// display: block;
+// aspect-ratio: 1;
+// overflow: hidden;
+// width: 100%;
+// height: 100%;
+//}
+//.feed-images {
+// width: 100%;
+// height: 100%;
+// &.multi {
+// display :grid;
+// grid-template-columns: repeat(3, 1fr);
+// grid-auto-rows: 1fr;
+// gap: 4px;
+//
+// > a {
+// width: 100%;
+// height: 100%;
+// aspect-ratio: 1;
+// }
+// .feed-image {
+// grid-row: span 2;
+// grid-column: span 2;
+// }
+// }
+// img {
+// width: 100%;
+// height: 100%;
+// object-fit: cover;
+// transition: transform var(--trans-t) var(--trans-fn);
+// }
+// a:hover img {
+// transform: scale(1.05);
+// }
+//}
+//
+//.feed-item {
+// &:nth-of-type(4n+2) .multi .feed-image {
+// grid-column: 2 / span 2;
+// grid-row: 1 / span 2;
+// }
+// &:nth-of-type(4n+3) .multi .feed-image {
+// grid-row: 2 / span 2;
+// grid-column: 1 / span 2;
+// }
+// &:nth-of-type(4n+4) .multi .feed-image {
+// grid-column: 2 / span 2;
+// grid-row: 2 / span 2;
+// }
+//}
+//
+///** Item Information **/
+//.item-info {
+// padding: .25rem;
+// border-left: 1px solid rgb(var(--base-200));
+// >div + div {
+// margin-top: .5em;
+// position: relative;
+//
+// &::before {
+// content: '';
+// display: block;
+// position: absolute;
+// top: -.3em;
+// left: -.25rem;
+// width: 66.6%;
+// border-bottom: 1px solid rgb(var(--base-200));
+// }
+// }
+// h3 {
+// margin: 0 0 .5em 0!important;
+// font-size: 1.1rem;
+// font-family: var(--body);
+// font-weight: var(--fw-b);
+// }
+// span {
+// text-transform: uppercase;
+// display: flex;
+// align-items: center;
+// }
+// .icon {
+// --w: 1.1em;
+// margin-right: .5em;
+// display: inline-block;
+// vertical-align: middle;
+// }
+//}
+//.item-list {
+// ul {
+// margin: 0;
+// padding: .5em 0;
+// display: flex;
+// flex-wrap: wrap;
+// gap: .5rem;
+// li {
+// list-style: none;
+// }
+// }
+// a {
+// background-color: var(--pink-0);
+// border: 1px solid transparent;
+// border-radius: 4px;
+// color: var(--light-0);
+// padding: .25em;
+// line-height: .8;
+// &:visited {
+// background-color: var(--pink-100);
+// color: var(--white);
+// }
+// &:visited:hover,
+// &:visited:focus,
+// &:hover,
+// &:focus {
+// background-color: transparent;
+// border-color: rgb(var(--contrast));
+// color: rgb(var(--contrast));
+// }
+// }
+//}
+///**
+//Loading
+// */
+//.loading {
+// opacity: .7;
+//}
+//
+//.loading-overlay {
+// position: fixed;
+// top: 0;
+// left: 0;
+// right: 0;
+// bottom: 0;
+// background-color: rgba(var(--base),var(--op-4));
+// display: flex;
+// align-items: center;
+// justify-content: center;
+// transition: opacity 0.3s ease, visibility 0.3s ease;
+// z-index: 9999;
+// opacity: 0;
+// visibility: hidden;
+//}
+//.loading .loading-overlay {
+// opacity: 1;
+// visibility: visible;
+//
+// &::after {
+// content: '';
+// position: absolute;
+// z-index: -1;
+// inset: 0;
+// background: linear-gradient(
+// 90deg,
+// var(--shimmer)
+// );
+// animation: shimmer 3s ease-in-out infinite;
+// }
+//
+// .wrapper {
+// background-color: rgba(var(--base),var(--op-6));
+// padding: 2rem;
+// border-radius: var(--radius);
+// text-align: center;
+// max-width: 90%;
+// width: 400px;
+// height: 300px;
+// z-index: 5;
+// display: flex;
+// justify-content: center;
+// align-items: center;
+// position: relative;
+//
+// .spinner {
+// --h: 150px;
+// --w: calc(var(--h) * 2);
+// border-top: 5px solid var(--pink-0);
+// border-radius: 50%;
+// position: absolute;
+// width: var(--w);
+// height: var(--w);
+// top: calc(50% - var(--h));
+// left: calc(50% - var(--h));
+// opacity: .5;
+// z-index: 0;
+// animation: spin 1s var(--trans-t) infinite;
+// }
+// div.icon {
+// height: 50px;
+// width: 50px;
+//
+// .icon {
+// --w: 100%;
+// svg {
+// animation: dance 2s ease-in-out infinite;
+// transition: color 0.3s ease;
+// }
+// }
+// }
+// .status {
+// height: 200px;
+// width: 100%;
+// z-index: 5;
+// display: flex;
+// flex-direction: column;
+// align-items: center;
+//
+// h3 {
+// margin: 1.5rem 0 .25rem!important;
+// color: rgb(var(--contrast-200));
+// }
+// .message {
+// margin: 0;
+// max-width: 275px;
+// color: rgb(var(--contrast-100));
+// font-size: var(--txt-x-small);
+// animation: flicker 2s infinite;
+// }
+// }
+// }
+//}
+//
+//
+///* Animations */
+//@keyframes highlight {
+// 0%, 100% {
+// box-shadow: none;
+// }
+// 50% {
+// box-shadow: 0 0 0 4px var(--pink-0);
+// }
+//}
+//
+//@keyframes pop {
+// 0% { transform: scale(1); }
+// 50% { transform: scale(1.3); }
+// 75% { transform: scale(0.9); }
+// 100% { transform: scale(1); }
+//}
+//
+//@keyframes bubble {
+// 50% { box-shadow: 19px 0 0 3px, 38px 0 0 7px, 57px 0 0 3px }
+// 100% { box-shadow: 19px 0 0 0, 38px 0 0 3px, 57px 0 0 7px }
+//}
+//@keyframes highlight-pulse {
+// 0%, 100% { box-shadow: 0 0 0 4px #FF0080, 0 8px 16px rgba(0, 0, 0, 0.1); }
+// 50% { box-shadow: 0 0 0 8px #FF0080, 0 12px 24px rgba(0, 0, 0, 0.15); }
+//}
+//
+//@keyframes spin {
+// to { transform: rotate(360deg); }
+//}
+//
+//@keyframes shimmer {
+// 0% { transform: translateX(-100%); }
+// 50%, 100% { transform: translateX(100%); }
+//}
+//@keyframes dance {
+// 0%, 100% { transform: rotate(-5deg) scale(1);}
+// 50% { transform: rotate(5deg) scale(1.1); }
+//}
+//@keyframes flicker {
+// 0% { opacity: 0.6; }
+// 50% { opacity: 1; }
+// 100% { opacity: 0.6; }
+//}
+//
+//
+///**
+//Accessibility
+// */
+//
+///* Keyboard navigable feed items */
+//.feed-item[tabindex="0"] {
+// position: relative;
+//}
+//
+//.feed-item[tabindex="0"]::after {
+// content: '';
+// position: absolute;
+// top: 0;
+// left: 0;
+// right: 0;
+// bottom: 0;
+// pointer-events: none;
+// border: 2px solid transparent;
+// transition: border-color 0.2s ease;
+//}
+//
+//.feed-item[tabindex="0"]:focus::after {
+// border-color: #FF0080;
+//}
+//
+//
+//.feed-block .item {
+// summary {
+// a {
+// background-color: rgb(var(--action-0));
+// display: flex;
+// gap: .25rem;
+// flex-wrap: nowrap;
+// aspect-ratio: 1;
+// position: relative;
+// }
+// img {
+// width: 50%;
+// height: 100%;
+// object-fit: cover;
+// }
+//
+// }
+//}
+
+
.feed-block {
- max-width: var(--full);
- margin: 0 auto;
+ grid-column: full;
+ .filters {
+ padding: 1rem 0;
+ max-width:var(--wide);
+ margin: 0 auto;
- &:target {
- scroll-snap-margin-top: 5rem;
- scroll-margin-top: 5rem;
- outline: 0;
- border-radius: v0;
- padding: 0;
-
- .feed-item {
- outline: double var(--pink-0);
+ .remove-term.remove-term {
+ width: max-content;
+ height: max-content
}
}
-}
-
-.loading .feed-block {
- opacity: .7;
-}
-
-.label {
- display: flex;
- align-items: center;
- gap: .25rem;
- font-size: .9rem;
- a:hover {
- color: var(--pink-0);
- }
-}
-
-/** Filters Form **/
-.feed-filters {
- margin: 2rem 0;
- position: sticky;
- top: 3rem;
- z-index: 15;
- background: var(--overlay-heavy);
- padding: .25rem 3rem;
- details[open] summary {
- background-color: var(--overlay);
- }
- summary {
- justify-content: flex-start;
-
- > * {
- order: 3;
- }
+ .filter-group {
+ position: relative;
+ padding: 2rem 0;
.label {
- order: 1;
+ position: absolute;
+ left: 0;
}
- .filter-label {
- order: 2;
+ > .label {
+ top: 0;
}
- &::after {
- order: 4;
+ [type=radio] {
+ position:absolute;
+ left: var(--offScreen);
}
- #favourites + label {
- margin-left: auto;
- }
- #favourites + label:hover,
- #favourites:checked + label {
- border-color: var(--pink-0);
- background-color: var(--pink-0);
- color: var(--white);
-
- }
- #favourites:checked + label {
- animation: pop 0.4s cubic-bezier(0.25, 0.46, 0.45, 0.94);
- }
- }
-
- details[open],
- summary:hover {
- background-color: var(--overlay-heavy);
- }
-
- &:has(#favourites) {
- summary::after {
- margin-left: 1rem;
- }
- }
-}
-summary > * {
- order: 3;
-}
-summary .label {
- order: 1;
-}
-.filter-label {
- display: inline-block;
- vertical-align: middle;
- height: 1.3em;
- order: 2;
- margin: 0;
- padding: 0;
-
- li {
- list-style: none;
- height: 0;
- overflow: hidden;
- &.active {
- height: 100%;
- }
- }
-}
-.filter-group {
- display: flex;
- align-items: center;
- gap: .5rem;
- flex-wrap: wrap;
- label {
- font-weight: 100;
- }
- &:has(.order-by) {
- justify-content: space-between;
- }
- .order-by,
- .order-direction {
- display: flex;
- flex-wrap: wrap;
- gap: .5rem;
- flex: 1;
- justify-content: flex-start;
- .label {
- width: 100%;
- }
-
- label:has(.label) {
- padding: 0 .35rem;
- gap: .5rem;
- .label {
- font-size: 1rem;
+ button, label {
+ position: relative;
+ padding: .5rem;
+ height: max-content;
+ &:hover {
+ color: var(--action-contrast);
}
}
+ button:hover .label,
+ :checked + label .label,
+ label:hover .label {
+ opacity: 1;
+ visibility: visible;
+ }
+ &:has(label:hover) :checked + label .label,
+ button .label,
+ label .label {
+ --height: max-content;
+ opacity: 0;
+ visibility: hidden;
+ bottom: -2rem;
+ width: max-content;
+ white-space: nowrap;
+ font-weight: var(--fw-b);
+ }
+
+
+ }
+ h3 {
+ margin: 0 0 .25rem;
+ font-size: var(--medium);
}
}
-.filter-group >.label {
- width: 100%;
-}
-
-/**
-Feed Grid
- */
-.feed-grid {
- display: grid;
- grid-template-columns: repeat(auto-fit, minmax(250px, 1fr));
- gap: .5rem;
- margin-bottom: 2rem;
- padding: 0 4rem;
- --delay: 0s;
- --increase: .1s;
-}
-.feed-empty-state {
- grid-column: 1/-1;
- text-align: center;
- padding: 2rem;
- background: var(--base-100);
- border-radius: var(--innerRadius);
- margin: 0 auto;
- max-width: 600px;
-}
-/**
-Placeholders
- */
+/** PLACEHOLDERS **/
.placeholder {
aspect-ratio: 1;
- background: var(--base);
- border: 1rem solid var(--base-50);
+ background: rgb(var(--base));
+ border: 1rem solid rgb(var(--base-50));
border-radius: 1rem;
display: flex;
justify-content: center;
align-items: center;
- .icon {
+ i.icon {
--w: 50%;
- color: var(--base-200);
-
- svg {
- animation: dance 2.5s ease-in-out infinite;
- }
+ color: rgb(var(--base-200));
+ animation: dance 2.5s ease-in-out infinite;
}
}
-/**
-Feed Items
- */
-.feed-item {
+.item-grid {
+ padding: 0 var(--chip);
+ max-width: 100%;
+}
+/** FEED ITEM **/
+.feed.item {
position: relative;
border-radius: 0.5rem;
overflow: hidden;
- background: var(--base-50);
+ background: rgb(var(--base-50));
box-shadow: 0 2px 4px rgba(0,0,0,0.1);
- opacity: 0;
- transition: opacity var(--transition-base) var(--delay);
height: fit-content;
padding: 0;
+ details {
+ z-index: var(--z-2);
+ width: 100%;
+ position: relative;
+ padding: 0;
+ summary {
+ position:absolute;
+ top: -3rem;
+ left:0;
+ width: 100%;
+ background-color: rgba(var(--base),var(--op-2));
+ backdrop-filter: blur(5px);
+ &:hover {
+ background-color: rgba(var(--action-0),var(--op-45));
+ }
+ }
+ &[open] {
+ padding: .25rem .5rem;
+ summary .icon {
+ opacity: 0;
+ }
+ }
+
+ }
img {
- opacity: .7;
- filter: grayscale(.5) sepia(.3) blur(7px);
- }
- &[data-loaded=true] {
- img {
- opacity: 1;
- filter: none;
+ object-fit: cover;
+ width: 100%;
+ height: 100%;
+ //opacity: .7;
+ //filter: grayscale(.5) sepia(.3);
+ &:hover {
+ opacity: .8;
}
}
+ &[data-timeline] {
+ .images {
+ aspect-ratio: 3/2;
+ padding: 0 0 1rem;
+ span {
+ width: 50%;
+ position: absolute;
+ background-color: rgb(var(--action-0));
+ color: var(--action-contrast);
+ padding: .25rem .5rem;
+ &:first-of-type {
+ bottom: 0;
+ right: 50%;
+ text-align: right;
+ }
+ &:last-of-type {
+ top: 0;
+ left: 50%;
+ }
+ }
+ > a {
+ position: relative;
+ display: flex;
+ flex-wrap: nowrap;
+ width: 100%;
+ height: 100%;
+ }
+ }
+ img {
+ width: 50%;
+ object-fit: cover;
+ height: 100%;
+ &:first-of-type {
+ border-right: 1px solid rgb(var(--action-0));
+ }
+ }
+ }
+
+
a {
&::before,
&::after {
display: none;
}
}
- details a {
- font-size: clamp(1rem, 0.9306rem + 0.2222vw, 1.125rem);
- }
-
- &[data-loaded] {
- opacity: 1;
- + [data-loaded] {
- --delay: var(--delay) + var(--increase);
- }
- }
-
- &.highlighted {
- box-shadow: 0 0 0 4px #FF0080, 0 8px 16px rgba(0, 0, 0, 0.1);
- animation: highlight-puls 2s ease-in-out;
- }
- &[open],
- &:hover {
- .handle {
- background-color: var(--overlay-pink-medium);
- backdrop-filter: blur(5px);
- }
- }
- summary {
- width: calc(100% - 1rem);
- height: 100%;
- aspect-ratio: 1;
- .handle {
- position: absolute;
- bottom: 0;
- left: 0;
- right: 0;
- background-color: var(--overlay-light);
- backdrop-filter: blur(5px);
- border-radius: var(--innerRadius);
- z-index: 1;
- padding: .25rem .25rem .25rem 1.1rem;
- }
- &::after {
- z-index: 11;
- position: absolute;
- bottom: .35rem;
- right: .7rem;
- width: 1.5rem;
- height: 1.5rem;
- cursor: pointer;
- }
- }
label {
font-weight: normal;
@@ -269,356 +820,137 @@
}
}
}
-/**
-Load More Button
- */
-.load-more {
- opacity: 1;
- margin: 1rem auto;
- width: 66.666%;
- display: flex;
- align-items: center;
- gap: .5rem;
- padding: .75rem 1.5rem;
- background: var(--base);
- color: var(--contrast);
- border-radius: 4px;
- font-size: var(--medium);
- transition: all var(--transition-base);
- border: 2px solid transparent;
- &[hidden] {
- opacity: 0;
- transition: all var(--transition-base);
- }
- &:hover {
- background: var(--pink-50);
- border-color: var(--contrast);
- color: var(--white);
- }
+
+
+.item-grid:has([data-timeline]) {
+ grid-template-columns: repeat(auto-fill, minmax(250px, 1fr));
}
-/**
-favourite button
- */
-button.favourite {
+
+.items-wrap [type=radio],
+.items-wrap [type=checkbox] {
position: absolute;
- top: .5rem;
- right: .5rem;
- z-index: 10;
- background: var(--overlay-medium);
- border-radius: 50%;
- box-shadow: var(--subtle);
- border: none;
- width: 2rem;
- height: 2rem;
- display: flex;
- justify-content: center;
- align-items: center;
- backdrop-filter: blur(5px);
- transition: all var(--transition-base);
-
- &:hover {
- transform: scale(1.1);
- color: var(--pink-0);
- background: var(--base);
- box-shadow: 0 4px 8px rgba(0,0,0,0.15);
- }
-
- &.favourited {
- animation: pop 0.4s cubic-bezier(0.25, 0.46, 0.45, 0.94);
- }
-}
-
-
-/** Images **/
-.feed-image {
- display: block;
- aspect-ratio: 1;
- overflow: hidden;
- width: 100%;
- height: 100%;
-}
-.feed-images {
- width: 100%;
- height: 100%;
- &.multi {
- display :grid;
- grid-template-columns: repeat(3, 1fr);
- grid-auto-rows: 1fr;
- gap: 4px;
-
- > a {
- width: 100%;
- height: 100%;
- aspect-ratio: 1;
- }
- .feed-image {
- grid-row: span 2;
- grid-column: span 2;
- }
- }
- img {
- width: 100%;
- height: 100%;
- object-fit: cover;
- transition: transform var(--timing) var(--function);
- }
- a:hover img {
- transform: scale(1.05);
- }
-}
-
-.feed-item {
- &:nth-of-type(4n+2) .multi .feed-image {
- grid-column: 2 / span 2;
- grid-row: 1 / span 2;
- }
- &:nth-of-type(4n+3) .multi .feed-image {
- grid-row: 2 / span 2;
- grid-column: 1 / span 2;
- }
- &:nth-of-type(4n+4) .multi .feed-image {
- grid-column: 2 / span 2;
- grid-row: 2 / span 2;
- }
-}
-
-/** Item Information **/
-.item-info {
- padding: .25rem;
- border-left: 1px solid var(--base-200);
- >div + div {
- margin-top: .5em;
- position: relative;
-
- &::before {
- content: '';
- display: block;
- position: absolute;
- top: -.3em;
- left: -.25rem;
- width: 66.6%;
- border-bottom: 1px solid var(--base-200);
- }
- }
- h3 {
- margin: 0 0 .5em 0!important;
- font-size: 1.1rem;
- font-family: var(--body);
- font-weight: var(--bWeight);
- }
- span {
- text-transform: uppercase;
- display: flex;
- align-items: center;
- }
- .icon {
- --w: 1.1em;
- margin-right: .5em;
- display: inline-block;
- vertical-align: middle;
- }
-}
-.item-list {
- ul {
- margin: 0;
- padding: .5em 0;
- display: flex;
- flex-wrap: wrap;
- gap: .5rem;
- li {
- list-style: none;
- }
- }
- a {
- background-color: var(--pink-0);
- border: 1px solid transparent;
- border-radius: 4px;
- color: var(--light-0);
- padding: .25em;
- line-height: .8;
- &:visited {
- background-color: var(--pink-100);
- color: var(--white);
- }
- &:visited:hover,
- &:visited:focus,
- &:hover,
- &:focus {
- background-color: transparent;
- border-color: var(--contrast);
- color: var(--contrast);
- }
- }
-}
-/**
-Loading
- */
-.loading {
- opacity: .7;
-}
-
-.loading-overlay {
- position: fixed;
- top: 0;
- left: 0;
- right: 0;
- bottom: 0;
- background-color: var(--overlay-medium);
- display: flex;
- align-items: center;
- justify-content: center;
- transition: opacity 0.3s ease, visibility 0.3s ease;
- z-index: 9999;
opacity: 0;
- visibility: hidden;
-}
-.loading .loading-overlay {
- opacity: 1;
- visibility: visible;
-
- &::after {
- content: '';
- position: absolute;
- z-index: -1;
- inset: 0;
- background: linear-gradient(
- 90deg,
- var(--shimmer)
- );
- animation: shimmer 3s ease-in-out infinite;
- }
-
- .wrapper {
- background-color: var(--overlay-heavy);
- padding: 2rem;
- border-radius: var(--innerRadius);
- text-align: center;
- max-width: 90%;
- width: 400px;
- height: 300px;
- z-index: 5;
- display: flex;
- justify-content: center;
- align-items: center;
- position: relative;
-
- .spinner {
- --h: 150px;
- --w: calc(var(--h) * 2);
- border-top: 5px solid var(--pink-0);
- border-radius: 50%;
- position: absolute;
- width: var(--w);
- height: var(--w);
- top: calc(50% - var(--h));
- left: calc(50% - var(--h));
- opacity: .5;
- z-index: 0;
- animation: spin 1s var(--timing) infinite;
- }
- div.icon {
- height: 50px;
- width: 50px;
-
- .icon {
- --w: 100%;
- svg {
- animation: dance 2s ease-in-out infinite;
- transition: color 0.3s ease;
- }
- }
- }
- .status {
- height: 200px;
- width: 100%;
- z-index: 5;
- display: flex;
- flex-direction: column;
- align-items: center;
-
- h3 {
- margin: 1.5rem 0 .25rem!important;
- color: var(--contrast-200);
- }
- .message {
- margin: 0;
- max-width: 275px;
- color: var(--contrast-100);
- font-size: var(--small);
- animation: flicker 2s infinite;
- }
- }
- }
+ left: -200vw;
}
-
-/* Animations */
-@keyframes highlight {
- 0%, 100% {
- box-shadow: none;
- }
- 50% {
- box-shadow: 0 0 0 4px var(--pink-0);
- }
-}
-
-@keyframes pop {
- 0% { transform: scale(1); }
- 50% { transform: scale(1.3); }
- 75% { transform: scale(0.9); }
- 100% { transform: scale(1); }
-}
-
-@keyframes bubble {
- 50% { box-shadow: 19px 0 0 3px, 38px 0 0 7px, 57px 0 0 3px }
- 100% { box-shadow: 19px 0 0 0, 38px 0 0 3px, 57px 0 0 7px }
-}
-@keyframes highlight-pulse {
- 0%, 100% { box-shadow: 0 0 0 4px #FF0080, 0 8px 16px rgba(0, 0, 0, 0.1); }
- 50% { box-shadow: 0 0 0 8px #FF0080, 0 12px 24px rgba(0, 0, 0, 0.15); }
-}
-
-@keyframes spin {
- to { transform: rotate(360deg); }
-}
-
-@keyframes shimmer {
- 0% { transform: translateX(-100%); }
- 50%, 100% { transform: translateX(100%); }
-}
-@keyframes dance {
- 0%, 100% { transform: rotate(-5deg) scale(1);}
- 50% { transform: rotate(5deg) scale(1.1); }
-}
-@keyframes flicker {
- 0% { opacity: 0.6; }
- 50% { opacity: 1; }
- 100% { opacity: 0.6; }
-}
-
-
-/**
-Accessibility
- */
-
-/* Keyboard navigable feed items */
-.feed-item[tabindex="0"] {
+.items-wrap [type=radio] + label,
+.items-wrap [type=checkbox] + label {
position: relative;
+ cursor: pointer;
}
-.feed-item[tabindex="0"]::after {
+.items-wrap [type=radio] + label:hover,
+.items-wrap [type=checkbox] + label:hover {
+ color: rgb(var(--action-0));
+}
+
+.items-wrap [type=radio] + label::before,
+.items-wrap [type=checkbox] + label::before,
+.items-wrap [type=radio] + label::after,
+.items-wrap [type=checkbox] + label::after {
content: '';
position: absolute;
- top: 0;
+ top: 50%;
+}
+
+.items-wrap [type=radio] + label::after,
+.items-wrap [type=checkbox] + label::after {
+ left: 5px;
+ transform: translateY(-70%) rotate(45deg);
+ width: 5px;
+ height: 10px;
+ border: solid var(--light-0);
+ border-width: 0 2px 2px 0;
+ display: none;
+}
+
+.items-wrap [type=radio] + label::before,
+.items-wrap [type=checkbox] + label::before {
left: 0;
- right: 0;
- bottom: 0;
- pointer-events: none;
- border: 2px solid transparent;
- transition: border-color 0.2s ease;
+ transform: translateY(-50%);
+ width: 1rem;
+ height: 1rem;
+ border: 2px solid rgb(var(--contrast-200));
+ background-color: rgb(var(--base));
+ border-radius: var(--radius);
}
-.feed-item[tabindex="0"]:focus::after {
- border-color: #FF0080;
+.items-wrap [type=radio]:hover + label::before,
+.items-wrap [type=checkbox]:hover + label::before {
+ border-color: rgb(var(--action-200));
}
+.items-wrap [type=radio]:checked + label::before,
+.items-wrap [type=checkbox]:checked + label::before{
+ background-color: rgb(var(--action-0));
+ border-color: rgb(var(--action-100));
+}
+
+.items-wrap [type=radio]:checked + label::before {
+ border-radius: 50%;
+}
+
+.items-wrap [type=checkbox]:checked + label::after {
+ display: block;
+ left: 5px;
+ top: 50%;
+ transform: translateY(-70%) rotate(45deg);
+ width: .35rem;
+ height: .66rem;
+ border: solid var(--light-0);
+ border-width: 0 2px 2px 0;
+}
+
+.items-wrap :disabled + label {
+ cursor: not-allowed;
+ background-color: rgb(var(--base-50));
+ color: rgb(var(--base-200));
+ border-color: rgb(var(--base-200));
+}
+
+.items-wrap :disabled + label:hover {
+ background-color: rgb(var(--base-50));
+ color: rgb(var(--base-200));
+ border-color: rgb(var(--base-200));
+}
+
+.items-wrap :disabled + label::before {
+ border-color: rgb(var(--base-200));
+}
+
+#jvb-selector .items-wrap [type=radio] + label,
+#jvb-selector .items-wrap [type=checkbox] + label{
+ flex: 1;
+ padding-left: 2rem!important;
+ transform-origin: top center;
+ will-change: transform;
+}
+
+.feed-block + footer {
+ grid-column: full;
+ padding: 0!important;
+ margin: 0;
+ background-color: rgb(var(--base-50));
+ z-index: 0;
+ display: flex;
+ justify-content: flex-end;
+ button {
+ width: max-content;
+ margin-left: auto;
+ padding: .35rem .25rem;
+ --w: 1.3em!important;
+ flex-wrap: nowrap;
+ justify-content:flex-start;
+ transition: var(--trans-size);
+ font-size: var(--txt-x-small);
+ min-height: 0;
+ span {
+ display: none;
+ white-space: nowrap;
+ }
+ &:focus span,
+ &:hover span {
+ display: block;
+ }
+ }
+}
--
Gitblit v1.10.0