diff --git a/components.js b/components.js index 2cb0ffb..d801404 100644 --- a/components.js +++ b/components.js @@ -1058,6 +1058,7 @@ smPopup.innerHTML = ` right: 0; pointer-events: none; background: var(--backdrop-background); + backdrop-filter: blur(0.1rem); -webkit-transition: opacity 0.3s; -o-transition: opacity 0.3s; transition: opacity 0.3s; @@ -1261,17 +1262,15 @@ customElements.define('sm-popup', class extends HTMLElement { duration: 300, easing: 'ease' } - if (popupStack) { - popupStack.push({ - popup: this, - permission: pinned - }); - if (popupStack.items.length > 1) { - this.animateTo(popupStack.items[popupStack.items.length - 2].popup.shadowRoot.querySelector('.popup'), [ - { transform: 'none' }, - { transform: 'translateY(-1.5rem) scale(0.9)' }, - ], animOptions) - } + popupStack.push({ + popup: this, + permission: pinned + }); + if (popupStack.items.length > 1) { + this.animateTo(popupStack.items[popupStack.items.length - 2].popup.shadowRoot.querySelector('.popup'), [ + { transform: 'none' }, + { transform: (window.innerWidth > 640) ? 'scale(0.95)' : 'translateY(-1.5rem)' }, + ], animOptions) } this.popupContainer.classList.remove('hide'); if (!this.offset) @@ -1321,20 +1320,6 @@ customElements.define('sm-popup', class extends HTMLElement { this.popupContainer.classList.add('hide'); this.popup.style = '' this.removeAttribute('open'); - if (typeof popupStack !== 'undefined') { - popupStack.pop(); - if (popupStack.items.length) { - this.animateTo(popupStack.items[popupStack.items.length - 1].popup.shadowRoot.querySelector('.popup'), [ - { transform: 'translateY(-1.5rem) scale(0.9)' }, - { transform: 'none' }, - ], animOptions) - - } else { - this.resumeScrolling(); - } - } else { - this.resumeScrolling(); - } if (this.forms.length) { this.forms.forEach(form => form.reset()); @@ -1349,6 +1334,16 @@ customElements.define('sm-popup', class extends HTMLElement { ); this.isOpen = false; }) + popupStack.pop(); + if (popupStack.items.length) { + this.animateTo(popupStack.items[popupStack.items.length - 1].popup.shadowRoot.querySelector('.popup'), [ + { transform: (window.innerWidth > 640) ? 'scale(0.95)' : 'translateY(-1.5rem)' }, + { transform: 'none' }, + ], animOptions) + + } else { + this.resumeScrolling(); + } } handleTouchStart(e) { @@ -3565,6 +3560,7 @@ tagsInput.innerHTML = ` } .tag { + overflow-wrap: anywhere; cursor: pointer; user-select: none; align-items: center; diff --git a/css/main.css b/css/main.css index 9d0dc47..621ae20 100644 --- a/css/main.css +++ b/css/main.css @@ -34,8 +34,7 @@ body * { body[data-theme=dark], body[data-theme=dark] * { --accent-color: #86afff; - --text-color: 230, 230, 230; - --text-color-light: 170, 170, 170; + --text-color: 220, 220, 220; --background-color: 10, 10, 10; --foreground-color: rgb(24, 24, 24); --danger-color: rgb(255, 106, 106); @@ -72,6 +71,7 @@ a:not([class]):focus-visible { } input[type=datetime-local] { + width: 100%; padding: 0.6rem 0.8rem; background-color: rgba(var(--text-color), 0.06); border: none; @@ -588,7 +588,6 @@ main { gap: 0.5rem; align-items: center; width: calc(100% - 2rem); - margin: 0 1rem; z-index: 1; background-color: rgba(var(--background-color), 1); } @@ -884,12 +883,6 @@ footer { display: none; } } -@supports (-webkit-text-stroke: 1px black) { - #landing h1 { - -webkit-text-stroke: 1px rgba(var(--text-color), 1); - -webkit-text-fill-color: rgba(var(--background-color), 1); - } -} @media screen and (min-width: 40rem) { sm-popup { --width: 24rem; @@ -955,7 +948,7 @@ footer { #preview_popup h1, #article h1 { - font-size: 2rem; + font-size: 2.5rem; } #article { @@ -965,6 +958,20 @@ footer { #preview_popup { --width: 60ch; } + + #edit_article_meta_popup { + --width: 48rem; + } + #edit_article_meta_popup > section { + display: grid; + gap: 1.5rem; + grid-template-columns: 1fr 1.5fr; + align-items: flex-start; + } + + #user_popup { + --width: 28rem; + } } @media (any-hover: hover) { ::-webkit-scrollbar { diff --git a/css/main.min.css b/css/main.min.css index 1e2f0cb..ecf9832 100644 --- a/css/main.min.css +++ b/css/main.min.css @@ -1 +1 @@ -*{padding:0;margin:0;box-sizing:border-box;font-family:"Inter",sans-serif}:root{font-size:clamp(1rem,1.2vmax,1.2rem)}html,body{height:100%;scroll-behavior:smooth}body{color:rgba(var(--text-color), 1);background:rgba(var(--background-color), 1)}body,body *{--accent-color: #256eff;--text-color: 36, 36, 36;--background-color: 248, 248, 248;--foreground-color: rgb(255, 255, 255);--danger-color: rgb(255, 75, 75);--green: #1cad59;--like-color: #e91e63;scrollbar-width:thin}body[data-theme=dark],body[data-theme=dark] *{--accent-color: #86afff;--text-color: 230, 230, 230;--text-color-light: 170, 170, 170;--background-color: 10, 10, 10;--foreground-color: rgb(24, 24, 24);--danger-color: rgb(255, 106, 106);--green: #00e676}body[data-theme=dark] sm-popup::part(popup){background-color:var(--foreground-color)}body[data-theme=dark] ::-webkit-calendar-picker-indicator{filter:invert(1)}p,strong{font-size:.9rem;max-width:70ch;line-height:1.7;color:rgba(var(--text-color), 0.8)}p:not(:last-of-type),strong:not(:last-of-type){margin-bottom:1.5rem}a{text-decoration:none}a:not([class]){color:var(--accent-color)}a:not([class]):focus-visible{box-shadow:0 0 0 .1rem rgba(var(--text-color), 1) inset}input[type=datetime-local]{padding:.6rem .8rem;background-color:rgba(var(--text-color), 0.06);border:none;border-radius:.3rem;font-size:.9rem;color:inherit;font-family:inherit}input[type=datetime-local]:focus{outline:none;box-shadow:0 0 0 .1rem var(--accent-color)}button,.button{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;position:relative;display:inline-flex;border:none;background-color:transparent;overflow:hidden;color:inherit;cursor:pointer;-webkit-tap-highlight-color:transparent;align-items:center;font-size:.9rem;font-weight:500}.button{white-space:nowrap;padding:.5rem .8rem;border-radius:.3rem;background-color:rgba(var(--text-color), 0.06);color:rgba(var(--text-color), 0.8);justify-content:center}.button--primary{background-color:var(--accent-color);color:rgba(var(--background-color), 1)}.icon-only{padding:.5rem;border-radius:.3rem}button:disabled{opacity:.5}a:-webkit-any-link:focus-visible{outline:rgba(var(--text-color), 1) .1rem solid}a:-moz-any-link:focus-visible{outline:rgba(var(--text-color), 1) .1rem solid}a:any-link:focus-visible{outline:rgba(var(--text-color), 1) .1rem solid}sm-input,sm-textarea,tags-input{font-size:.9rem;--border-radius: 0.3rem}sm-button{--padding: 0.6rem 0.8rem}sm-button[variant=primary] .icon{fill:rgba(var(--background-color), 1)}sm-button[disabled] .icon{fill:rgba(var(--text-color), 0.6)}sm-button.uppercase{letter-spacing:.05em}sm-button.danger{--background: var(--danger-color);color:rgba(var(--background-color), 1)}ul{list-style:none}.overflow-ellipsis{width:100%;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.breakable{overflow-wrap:break-word;word-wrap:break-word;-ms-word-break:break-all;word-break:break-word;-ms-hyphens:auto;-webkit-hyphens:auto;hyphens:auto}.full-bleed{grid-column:1/-1}.h1{font-size:1.5rem}.h2{font-size:1.2rem}.h3{font-size:1rem}.h4{font-size:.9rem}.h5{font-size:.8rem}.uppercase{text-transform:uppercase}.capitalize{text-transform:capitalize}.flex{display:flex}.grid{display:grid}.flow-column{grid-auto-flow:column}.gap-0-5{gap:.5rem}.gap-1{gap:1rem}.gap-1-5{gap:1.5rem}.gap-2{gap:2rem}.gap-3{gap:3rem}.text-align-right{text-align:right}.align-start{align-items:flex-start}.align-center{align-items:center}.text-center{text-align:center}.justify-start{justify-content:start}.justify-center{justify-content:center}.justify-right{margin-left:auto}.align-self-center{align-self:center}.justify-self-center{justify-self:center}.justify-self-start{justify-self:start}.justify-self-end{justify-self:end}.direction-column{flex-direction:column}.space-between{justify-content:space-between}.w-100{width:100%}.ripple{height:8rem;width:8rem;position:absolute;border-radius:50%;transform:scale(0);background:radial-gradient(circle, rgba(var(--text-color), 0.3) 0%, rgba(0, 0, 0, 0) 50%);pointer-events:none}.interact{position:relative;overflow:hidden;cursor:pointer;-webkit-tap-highlight-color:transparent}.empty-state{display:grid;width:100%;padding:1.5rem 0}.observe-empty-state:empty{display:none}.observe-empty-state:not(:empty)+.empty-state{display:none}.bullet-point{display:flex;align-items:center;justify-content:center;margin:0 .8ch}.bullet-point::after{content:"";height:.4ch;width:.4ch;border-radius:.5em;background-color:currentColor}.icon{width:1.2rem;height:1.2rem;fill:rgba(var(--text-color), 0.8);flex-shrink:0}.button__icon{height:1.2rem;width:1.2rem}.button__icon--left{margin-right:.5rem}.button__icon--right{margin-left:.5rem}.icon-button{padding:.6rem;border-radius:.8rem;background-color:rgba(var(--text-color), 0.1);height:-webkit-max-content;height:-moz-max-content;height:max-content}.icon-button .icon{fill:var(--accent-color)}#confirmation_popup,#prompt_popup{flex-direction:column}#confirmation_popup h4,#prompt_popup h4{font-weight:500;margin-bottom:.5rem}#confirmation_popup sm-button,#prompt_popup sm-button{margin:0}#confirmation_popup .flex,#prompt_popup .flex{padding:0;margin-top:1rem}#confirmation_popup .flex sm-button:first-of-type,#prompt_popup .flex sm-button:first-of-type{margin-right:.6rem;margin-left:auto}#prompt_message{margin-bottom:1.5rem}.popup__header{display:grid;gap:.5rem;width:100%;padding:0 1.5rem 0 .8rem;align-items:center;grid-template-columns:auto 1fr auto}.popup__header__close{padding:.5rem;cursor:pointer}.logo{position:absolute;color:inherit;display:grid;align-items:center;grid-template-columns:auto 1fr;gap:0 .2rem;justify-self:center}.logo h4{text-transform:capitalize;font-size:.9rem;letter-spacing:.03em}.logo .main-logo{height:1.4rem;width:1.4rem;fill:rgba(var(--text-color), 1);stroke:none}details summary{display:flex;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;cursor:pointer}details[open]>summary .down-arrow{transform:rotate(180deg)}sm-select,sm-option,strip-option{font-size:.9rem}sm-select{--max-height: 12rem}strip-select{--gap: 0}strip-option{font-weight:500;--border-radius: 0.3rem;--active-option-color: var(--accent-color)}sm-menu{--background: var(--foreground-color)}menu-option{font-size:.9rem}sm-copy{font-size:.9rem;--button-border-radius: 0.2rem}.warning{background-color:khaki;color:rgba(0,0,0,.7);padding:1rem;border-radius:.5rem;line-height:1.5}.page{height:100%}.page-layout,#preview_page{display:grid;grid-template-columns:1.5rem minmax(0, 1fr) 1.5rem}.page-layout>*,#preview_page>*{grid-column:2/3}#loading{display:grid;place-content:center;text-align:center}#loader_container{position:relative;height:3rem;overflow:hidden;margin-bottom:1.5rem}#loader_container::after{content:"";position:absolute;height:100%;width:100%;left:0;background:linear-gradient(rgba(var(--foreground-color), 1), transparent 20%, transparent 80%, rgba(var(--foreground-color), 1))}#loader{height:6rem;width:6rem;-webkit-animation:scroll infinite 1s cubic-bezier(0.075, 0.82, 0.165, 1);animation:scroll infinite 1s cubic-bezier(0.075, 0.82, 0.165, 1);fill:rgba(var(--text-color), 0.2)}@-webkit-keyframes scroll{to{transform:translateY(-3rem)}}@keyframes scroll{to{transform:translateY(-3rem)}}.label{font-size:.8rem;color:rgba(var(--text-color), 0.8);margin-bottom:.2rem}.icon--success{fill:var(--green)}.icon--failure,.icon--error{fill:var(--danger-color)}main{display:grid;height:100%;grid-template-rows:auto 1fr;grid-template-columns:minmax(0, 1fr)}#main_header{display:grid;gap:.5rem;padding:1rem;align-items:center;grid-column:1/-1;grid-template-columns:auto 1fr auto auto;background-color:rgba(var(--background-color), 1);z-index:2;border-bottom:thin solid rgba(var(--text-color), 0.2)}#expanding_search{position:absolute;display:grid;gap:.5rem;align-items:center;width:calc(100% - 2rem);margin:0 1rem;z-index:1;background-color:rgba(var(--background-color), 1)}#expanding_search .icon-only{margin-right:.5rem}#search_suggestions{position:absolute;top:calc(100% + .5rem);background-color:var(--foreground-color);padding:.3rem;width:100%;border-radius:.3rem;box-shadow:0 .5rem 1.5rem rgba(0,0,0,.1)}.search-suggestion{font-size:.9rem;color:inherit;padding:1rem;border-radius:.3rem}#search_articles{--border-radius: 0.5em;width:100%}theme-toggle{margin-left:auto;padding:0 .5rem}#main_page{display:grid;padding:1.5rem;gap:1.5rem;grid-template-columns:minmax(0, 1fr)}#news_categories_list{overflow-x:auto}.category{padding:.5rem;color:inherit;font-size:.9rem;white-space:nowrap;flex-shrink:0}#query_results_list{margin:1rem 0;padding-bottom:2rem;gap:1.6rem}.article-card{gap:.3rem}.article-card a{color:inherit}.article-card .article-link{gap:.5rem}.article-card__title{line-height:1.4}.article-card__category{background-color:rgba(var(--text-color), 0.1);border-radius:.3rem;font-size:.8rem;padding:.3rem .6rem;font-weight:700;color:rgba(var(--text-color), 0.6) !important;justify-self:flex-start;text-transform:capitalize}.article-card .flex{font-size:.8rem}#trending_article_container{counter-reset:trending;margin-bottom:1.5rem}.trending-article{counter-increment:trending;grid-template-columns:auto 1fr;gap:.5rem 1.5rem}.trending-article::before{content:counter(trending);grid-column:1/2;grid-row:1/3;font-size:2.5em;font-weight:700;opacity:.3}#explore{padding-top:1.5rem}#article{gap:2rem 0;padding-bottom:3rem}.hero-section{display:grid;gap:.5rem;grid-template-columns:minmax(0, 1fr);padding-top:1.5rem}#article_contributors{flex-wrap:wrap;gap:.3rem;margin:.5rem 0 1rem 0}.contributor{font-size:.8rem;background-color:rgba(var(--text-color), 0.06);border-radius:.3rem;padding:.3rem .5rem}.up-vote{display:grid;grid-template-columns:auto 1fr;position:relative;padding:.8rem;border-radius:2rem;background-color:var(--foreground-color);box-shadow:0 .5rem 1rem rgba(0,0,0,.1);border:solid rgba(var(--text-color), 0.2) thin}.up-vote>*{pointer-events:none}.up-vote:active{transform:none}.up-vote:active .icon{transform:scale(0.7)}.up-vote.liked{background-color:var(--like-color);color:#fff}.up-vote.liked .icon{fill:#fff}.up-vote .expanding-heart,.up-vote .ring{grid-area:1/1}.up-vote .icon{grid-area:1/1;fill:var(--like-color);height:1.5rem;width:1.5rem;transition:transform .2s}.ring{border:.1rem solid var(--like-color);border-radius:50%;height:.5rem;width:.5rem;justify-self:center}.temp-count,#like_count{grid-area:1/2}.temp-count:not(:empty),#like_count:not(:empty){margin-left:.4rem}#go_to_top{position:fixed;z-index:2;box-shadow:0 .5rem 1rem rgba(0,0,0,.2);border-radius:2rem;bottom:0;right:0;margin:1.5rem;padding:1rem;background-color:var(--foreground-color)}footer{padding:3rem 1.5rem;justify-items:center}#dashboard{height:-webkit-max-content;height:-moz-max-content;height:max-content;padding:1.5rem 0;grid-template-rows:auto 1fr}#publishing_requests,#article_analytics{margin-top:2rem;align-content:flex-start}.request-card{display:grid;gap:.5rem;border-radius:.5rem;align-items:flex-start;grid-template-columns:1fr auto}.request-card__title{grid-area:2/1}.request-card__time{font-size:.8rem}.request-card .flex{grid-row:span 2}.request-card .publish-button{text-transform:uppercase;letter-spacing:.05em;font-size:.8rem;font-weight:700}.article-row{align-items:center;gap:1rem;grid-template-columns:1fr auto auto}.article-row__published{font-size:.8rem}#preview_popup h1,#article h1{font-size:1.6rem;line-height:1.3}#preview_popup h3:not(:first-of-type),#article h3:not(:first-of-type){margin-top:2rem}#preview_popup h3,#article h3{margin-bottom:1rem}#preview_popup h3:not(:first-of-type),#article h3:not(:first-of-type){margin-top:1.5rem}#preview_popup p,#article p{font-family:"noto serif",serif;font-size:1rem;line-height:1.8}#preview_popup p>*,#article p>*{font-family:inherit}#preview_popup time,#preview_popup #reading_time,#article time,#article #reading_time{font-size:.8rem}.hide{display:none !important}@media screen and (max-width: 40rem){.hide-on-mobile{display:none}}@supports(-webkit-text-stroke: 1px black){#landing h1{-webkit-text-stroke:1px rgba(var(--text-color), 1);-webkit-text-fill-color:rgba(var(--background-color), 1)}}@media screen and (min-width: 40rem){sm-popup{--width: 24rem}h1,.h1{font-size:2rem}.h2{font-size:1.8rem}.h3{font-size:1.3rem}.h4{font-size:1rem}.popup__header{grid-column:1/-1;padding:1rem 1.5rem 0 .8rem}#confirmation_popup{--width: 24rem}.page-layout{grid-template-columns:1fr 80vw 1fr}.hide-on-desktop{display:none}#landing h1{-webkit-text-stroke-width:.1rem}#main_header{padding:1rem 1.5rem}#main_page{padding:1rem 8vw;grid-template-rows:auto 1fr;grid-template-columns:2fr 1fr}#main_page__header{grid-area:1/1/2/-1}#expanding_search{margin:1rem 1.5rem;left:0;width:20rem}#preview_popup h1,#article h1{font-size:2rem}#article{grid-template-columns:1fr 60ch 1fr}#preview_popup{--width: 60ch}}@media(any-hover: hover){::-webkit-scrollbar{width:.5rem;height:.5rem}::-webkit-scrollbar-thumb{background:rgba(var(--text-color), 0.3);border-radius:1rem}::-webkit-scrollbar-thumb:hover{background:rgba(var(--text-color), 0.5)}.interact,button:not(.button--primary){transition:background-color .3s}.interact:hover,button:not(.button--primary):hover{background-color:rgba(var(--text-color), 0.06)}.button--primary{transition:filter .3s}.button--primary:hover{filter:brightness(120%)}} \ No newline at end of file +*{padding:0;margin:0;box-sizing:border-box;font-family:"Inter",sans-serif}:root{font-size:clamp(1rem,1.2vmax,1.2rem)}html,body{height:100%;scroll-behavior:smooth}body{color:rgba(var(--text-color), 1);background:rgba(var(--background-color), 1)}body,body *{--accent-color: #256eff;--text-color: 36, 36, 36;--background-color: 248, 248, 248;--foreground-color: rgb(255, 255, 255);--danger-color: rgb(255, 75, 75);--green: #1cad59;--like-color: #e91e63;scrollbar-width:thin}body[data-theme=dark],body[data-theme=dark] *{--accent-color: #86afff;--text-color: 220, 220, 220;--background-color: 10, 10, 10;--foreground-color: rgb(24, 24, 24);--danger-color: rgb(255, 106, 106);--green: #00e676}body[data-theme=dark] sm-popup::part(popup){background-color:var(--foreground-color)}body[data-theme=dark] ::-webkit-calendar-picker-indicator{filter:invert(1)}p,strong{font-size:.9rem;max-width:70ch;line-height:1.7;color:rgba(var(--text-color), 0.8)}p:not(:last-of-type),strong:not(:last-of-type){margin-bottom:1.5rem}a{text-decoration:none}a:not([class]){color:var(--accent-color)}a:not([class]):focus-visible{box-shadow:0 0 0 .1rem rgba(var(--text-color), 1) inset}input[type=datetime-local]{width:100%;padding:.6rem .8rem;background-color:rgba(var(--text-color), 0.06);border:none;border-radius:.3rem;font-size:.9rem;color:inherit;font-family:inherit}input[type=datetime-local]:focus{outline:none;box-shadow:0 0 0 .1rem var(--accent-color)}button,.button{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;position:relative;display:inline-flex;border:none;background-color:transparent;overflow:hidden;color:inherit;cursor:pointer;-webkit-tap-highlight-color:transparent;align-items:center;font-size:.9rem;font-weight:500}.button{white-space:nowrap;padding:.5rem .8rem;border-radius:.3rem;background-color:rgba(var(--text-color), 0.06);color:rgba(var(--text-color), 0.8);justify-content:center}.button--primary{background-color:var(--accent-color);color:rgba(var(--background-color), 1)}.icon-only{padding:.5rem;border-radius:.3rem}button:disabled{opacity:.5}a:-webkit-any-link:focus-visible{outline:rgba(var(--text-color), 1) .1rem solid}a:-moz-any-link:focus-visible{outline:rgba(var(--text-color), 1) .1rem solid}a:any-link:focus-visible{outline:rgba(var(--text-color), 1) .1rem solid}sm-input,sm-textarea,tags-input{font-size:.9rem;--border-radius: 0.3rem}sm-button{--padding: 0.6rem 0.8rem}sm-button[variant=primary] .icon{fill:rgba(var(--background-color), 1)}sm-button[disabled] .icon{fill:rgba(var(--text-color), 0.6)}sm-button.uppercase{letter-spacing:.05em}sm-button.danger{--background: var(--danger-color);color:rgba(var(--background-color), 1)}ul{list-style:none}.overflow-ellipsis{width:100%;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.breakable{overflow-wrap:break-word;word-wrap:break-word;-ms-word-break:break-all;word-break:break-word;-ms-hyphens:auto;-webkit-hyphens:auto;hyphens:auto}.full-bleed{grid-column:1/-1}.h1{font-size:1.5rem}.h2{font-size:1.2rem}.h3{font-size:1rem}.h4{font-size:.9rem}.h5{font-size:.8rem}.uppercase{text-transform:uppercase}.capitalize{text-transform:capitalize}.flex{display:flex}.grid{display:grid}.flow-column{grid-auto-flow:column}.gap-0-5{gap:.5rem}.gap-1{gap:1rem}.gap-1-5{gap:1.5rem}.gap-2{gap:2rem}.gap-3{gap:3rem}.text-align-right{text-align:right}.align-start{align-items:flex-start}.align-center{align-items:center}.text-center{text-align:center}.justify-start{justify-content:start}.justify-center{justify-content:center}.justify-right{margin-left:auto}.align-self-center{align-self:center}.justify-self-center{justify-self:center}.justify-self-start{justify-self:start}.justify-self-end{justify-self:end}.direction-column{flex-direction:column}.space-between{justify-content:space-between}.w-100{width:100%}.ripple{height:8rem;width:8rem;position:absolute;border-radius:50%;transform:scale(0);background:radial-gradient(circle, rgba(var(--text-color), 0.3) 0%, rgba(0, 0, 0, 0) 50%);pointer-events:none}.interact{position:relative;overflow:hidden;cursor:pointer;-webkit-tap-highlight-color:transparent}.empty-state{display:grid;width:100%;padding:1.5rem 0}.observe-empty-state:empty{display:none}.observe-empty-state:not(:empty)+.empty-state{display:none}.bullet-point{display:flex;align-items:center;justify-content:center;margin:0 .8ch}.bullet-point::after{content:"";height:.4ch;width:.4ch;border-radius:.5em;background-color:currentColor}.icon{width:1.2rem;height:1.2rem;fill:rgba(var(--text-color), 0.8);flex-shrink:0}.button__icon{height:1.2rem;width:1.2rem}.button__icon--left{margin-right:.5rem}.button__icon--right{margin-left:.5rem}.icon-button{padding:.6rem;border-radius:.8rem;background-color:rgba(var(--text-color), 0.1);height:-webkit-max-content;height:-moz-max-content;height:max-content}.icon-button .icon{fill:var(--accent-color)}#confirmation_popup,#prompt_popup{flex-direction:column}#confirmation_popup h4,#prompt_popup h4{font-weight:500;margin-bottom:.5rem}#confirmation_popup sm-button,#prompt_popup sm-button{margin:0}#confirmation_popup .flex,#prompt_popup .flex{padding:0;margin-top:1rem}#confirmation_popup .flex sm-button:first-of-type,#prompt_popup .flex sm-button:first-of-type{margin-right:.6rem;margin-left:auto}#prompt_message{margin-bottom:1.5rem}.popup__header{display:grid;gap:.5rem;width:100%;padding:0 1.5rem 0 .8rem;align-items:center;grid-template-columns:auto 1fr auto}.popup__header__close{padding:.5rem;cursor:pointer}.logo{position:absolute;color:inherit;display:grid;align-items:center;grid-template-columns:auto 1fr;gap:0 .2rem;justify-self:center}.logo h4{text-transform:capitalize;font-size:.9rem;letter-spacing:.03em}.logo .main-logo{height:1.4rem;width:1.4rem;fill:rgba(var(--text-color), 1);stroke:none}details summary{display:flex;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;cursor:pointer}details[open]>summary .down-arrow{transform:rotate(180deg)}sm-select,sm-option,strip-option{font-size:.9rem}sm-select{--max-height: 12rem}strip-select{--gap: 0}strip-option{font-weight:500;--border-radius: 0.3rem;--active-option-color: var(--accent-color)}sm-menu{--background: var(--foreground-color)}menu-option{font-size:.9rem}sm-copy{font-size:.9rem;--button-border-radius: 0.2rem}.warning{background-color:khaki;color:rgba(0,0,0,.7);padding:1rem;border-radius:.5rem;line-height:1.5}.page{height:100%}.page-layout,#preview_page{display:grid;grid-template-columns:1.5rem minmax(0, 1fr) 1.5rem}.page-layout>*,#preview_page>*{grid-column:2/3}#loading{display:grid;place-content:center;text-align:center}#loader_container{position:relative;height:3rem;overflow:hidden;margin-bottom:1.5rem}#loader_container::after{content:"";position:absolute;height:100%;width:100%;left:0;background:linear-gradient(rgba(var(--foreground-color), 1), transparent 20%, transparent 80%, rgba(var(--foreground-color), 1))}#loader{height:6rem;width:6rem;-webkit-animation:scroll infinite 1s cubic-bezier(0.075, 0.82, 0.165, 1);animation:scroll infinite 1s cubic-bezier(0.075, 0.82, 0.165, 1);fill:rgba(var(--text-color), 0.2)}@-webkit-keyframes scroll{to{transform:translateY(-3rem)}}@keyframes scroll{to{transform:translateY(-3rem)}}.label{font-size:.8rem;color:rgba(var(--text-color), 0.8);margin-bottom:.2rem}.icon--success{fill:var(--green)}.icon--failure,.icon--error{fill:var(--danger-color)}main{display:grid;height:100%;grid-template-rows:auto 1fr;grid-template-columns:minmax(0, 1fr)}#main_header{display:grid;gap:.5rem;padding:1rem;align-items:center;grid-column:1/-1;grid-template-columns:auto 1fr auto auto;background-color:rgba(var(--background-color), 1);z-index:2;border-bottom:thin solid rgba(var(--text-color), 0.2)}#expanding_search{position:absolute;display:grid;gap:.5rem;align-items:center;width:calc(100% - 2rem);z-index:1;background-color:rgba(var(--background-color), 1)}#expanding_search .icon-only{margin-right:.5rem}#search_suggestions{position:absolute;top:calc(100% + .5rem);background-color:var(--foreground-color);padding:.3rem;width:100%;border-radius:.3rem;box-shadow:0 .5rem 1.5rem rgba(0,0,0,.1)}.search-suggestion{font-size:.9rem;color:inherit;padding:1rem;border-radius:.3rem}#search_articles{--border-radius: 0.5em;width:100%}theme-toggle{margin-left:auto;padding:0 .5rem}#main_page{display:grid;padding:1.5rem;gap:1.5rem;grid-template-columns:minmax(0, 1fr)}#news_categories_list{overflow-x:auto}.category{padding:.5rem;color:inherit;font-size:.9rem;white-space:nowrap;flex-shrink:0}#query_results_list{margin:1rem 0;padding-bottom:2rem;gap:1.6rem}.article-card{gap:.3rem}.article-card a{color:inherit}.article-card .article-link{gap:.5rem}.article-card__title{line-height:1.4}.article-card__category{background-color:rgba(var(--text-color), 0.1);border-radius:.3rem;font-size:.8rem;padding:.3rem .6rem;font-weight:700;color:rgba(var(--text-color), 0.6) !important;justify-self:flex-start;text-transform:capitalize}.article-card .flex{font-size:.8rem}#trending_article_container{counter-reset:trending;margin-bottom:1.5rem}.trending-article{counter-increment:trending;grid-template-columns:auto 1fr;gap:.5rem 1.5rem}.trending-article::before{content:counter(trending);grid-column:1/2;grid-row:1/3;font-size:2.5em;font-weight:700;opacity:.3}#explore{padding-top:1.5rem}#article{gap:2rem 0;padding-bottom:3rem}.hero-section{display:grid;gap:.5rem;grid-template-columns:minmax(0, 1fr);padding-top:1.5rem}#article_contributors{flex-wrap:wrap;gap:.3rem;margin:.5rem 0 1rem 0}.contributor{font-size:.8rem;background-color:rgba(var(--text-color), 0.06);border-radius:.3rem;padding:.3rem .5rem}.up-vote{display:grid;grid-template-columns:auto 1fr;position:relative;padding:.8rem;border-radius:2rem;background-color:var(--foreground-color);box-shadow:0 .5rem 1rem rgba(0,0,0,.1);border:solid rgba(var(--text-color), 0.2) thin}.up-vote>*{pointer-events:none}.up-vote:active{transform:none}.up-vote:active .icon{transform:scale(0.7)}.up-vote.liked{background-color:var(--like-color);color:#fff}.up-vote.liked .icon{fill:#fff}.up-vote .expanding-heart,.up-vote .ring{grid-area:1/1}.up-vote .icon{grid-area:1/1;fill:var(--like-color);height:1.5rem;width:1.5rem;transition:transform .2s}.ring{border:.1rem solid var(--like-color);border-radius:50%;height:.5rem;width:.5rem;justify-self:center}.temp-count,#like_count{grid-area:1/2}.temp-count:not(:empty),#like_count:not(:empty){margin-left:.4rem}#go_to_top{position:fixed;z-index:2;box-shadow:0 .5rem 1rem rgba(0,0,0,.2);border-radius:2rem;bottom:0;right:0;margin:1.5rem;padding:1rem;background-color:var(--foreground-color)}footer{padding:3rem 1.5rem;justify-items:center}#dashboard{height:-webkit-max-content;height:-moz-max-content;height:max-content;padding:1.5rem 0;grid-template-rows:auto 1fr}#publishing_requests,#article_analytics{margin-top:2rem;align-content:flex-start}.request-card{display:grid;gap:.5rem;border-radius:.5rem;align-items:flex-start;grid-template-columns:1fr auto}.request-card__title{grid-area:2/1}.request-card__time{font-size:.8rem}.request-card .flex{grid-row:span 2}.request-card .publish-button{text-transform:uppercase;letter-spacing:.05em;font-size:.8rem;font-weight:700}.article-row{align-items:center;gap:1rem;grid-template-columns:1fr auto auto}.article-row__published{font-size:.8rem}#preview_popup h1,#article h1{font-size:1.6rem;line-height:1.3}#preview_popup h3:not(:first-of-type),#article h3:not(:first-of-type){margin-top:2rem}#preview_popup h3,#article h3{margin-bottom:1rem}#preview_popup h3:not(:first-of-type),#article h3:not(:first-of-type){margin-top:1.5rem}#preview_popup p,#article p{font-family:"noto serif",serif;font-size:1rem;line-height:1.8}#preview_popup p>*,#article p>*{font-family:inherit}#preview_popup time,#preview_popup #reading_time,#article time,#article #reading_time{font-size:.8rem}.hide{display:none !important}@media screen and (max-width: 40rem){.hide-on-mobile{display:none}}@media screen and (min-width: 40rem){sm-popup{--width: 24rem}h1,.h1{font-size:2rem}.h2{font-size:1.8rem}.h3{font-size:1.3rem}.h4{font-size:1rem}.popup__header{grid-column:1/-1;padding:1rem 1.5rem 0 .8rem}#confirmation_popup{--width: 24rem}.page-layout{grid-template-columns:1fr 80vw 1fr}.hide-on-desktop{display:none}#landing h1{-webkit-text-stroke-width:.1rem}#main_header{padding:1rem 1.5rem}#main_page{padding:1rem 8vw;grid-template-rows:auto 1fr;grid-template-columns:2fr 1fr}#main_page__header{grid-area:1/1/2/-1}#expanding_search{margin:1rem 1.5rem;left:0;width:20rem}#preview_popup h1,#article h1{font-size:2.5rem}#article{grid-template-columns:1fr 60ch 1fr}#preview_popup{--width: 60ch}#edit_article_meta_popup{--width: 48rem}#edit_article_meta_popup>section{display:grid;gap:1.5rem;grid-template-columns:1fr 1.5fr;align-items:flex-start}#user_popup{--width: 28rem}}@media(any-hover: hover){::-webkit-scrollbar{width:.5rem;height:.5rem}::-webkit-scrollbar-thumb{background:rgba(var(--text-color), 0.3);border-radius:1rem}::-webkit-scrollbar-thumb:hover{background:rgba(var(--text-color), 0.5)}.interact,button:not(.button--primary){transition:background-color .3s}.interact:hover,button:not(.button--primary):hover{background-color:rgba(var(--text-color), 0.06)}.button--primary{transition:filter .3s}.button--primary:hover{filter:brightness(120%)}} \ No newline at end of file diff --git a/css/main.scss b/css/main.scss index c61f017..8b41000 100644 --- a/css/main.scss +++ b/css/main.scss @@ -37,8 +37,7 @@ body[data-theme="dark"] { &, * { --accent-color: #86afff; - --text-color: 230, 230, 230; - --text-color-light: 170, 170, 170; + --text-color: 220, 220, 220; --background-color: 10, 10, 10; --foreground-color: rgb(24, 24, 24); --danger-color: rgb(255, 106, 106); @@ -75,6 +74,7 @@ a:not([class]) { } input[type="datetime-local"] { + width: 100%; padding: 0.6rem 0.8rem; background-color: rgba(var(--text-color), 0.06); border: none; @@ -558,7 +558,6 @@ main { gap: 0.5rem; align-items: center; width: calc(100% - 2rem); - margin: 0 1rem; z-index: 1; background-color: rgba(var(--background-color), 1); .icon-only { @@ -846,12 +845,6 @@ footer { display: none; } } -@supports (-webkit-text-stroke: 1px black) { - #landing h1 { - -webkit-text-stroke: 1px rgba(var(--text-color), 1); - -webkit-text-fill-color: rgba(var(--background-color), 1); - } -} @media screen and (min-width: 40rem) { sm-popup { --width: 24rem; @@ -908,7 +901,7 @@ footer { #preview_popup, #article { h1 { - font-size: 2rem; + font-size: 2.5rem; } } #article { @@ -918,6 +911,18 @@ footer { #preview_popup { --width: 60ch; } + #edit_article_meta_popup { + --width: 48rem; + & > section { + display: grid; + gap: 1.5rem; + grid-template-columns: 1fr 1.5fr; + align-items: flex-start; + } + } + #user_popup { + --width: 28rem; + } } @media (any-hover: hover) { ::-webkit-scrollbar { diff --git a/index.html b/index.html index d0604b4..fa29948 100644 --- a/index.html +++ b/index.html @@ -345,7 +345,7 @@
- + -
-
-
Title
- +
+
+
+
Title
+ +
+
+
Select category
+ + Art + Culture + Entertainment + Politics + Science + Sports + Tech + +
+
+
Summary
+ +
-
-
Summary
- +
+
+
Add tags
+ +
+
+
contributors
+ +
+ + Save
-
-
Select category
- - Art - Culture - Entertainment - Politics - Science - Sports - Tech - -
-
-
Add tags
- -
- - Save
@@ -802,6 +810,7 @@ } document.querySelectorAll('.page').forEach(page => page.classList.add('hide')) getRef(targetPage).classList.remove('hide') + animateTo(getRef(targetPage), [{ opacity: 0 }, { opacity: 1 }], { duration: 300, fill: 'forwards', easing: 'ease' }) if (pagesData.lastPage !== pageId) { pagesData.lastPage = pageId if (!pagesData.openedPages.includes(pageId)) { @@ -982,7 +991,7 @@ getRef('trending_article_container').innerHTML = '' getRef('trending_article_container').append(frag) // render latest articles - const sortedArticles = sortedByVotes.slice(3, 6).sort((a, b) => b.published - a.published) + const sortedArticles = sortedByVotes.slice(3).sort((a, b) => b.published - a.published) sortedArticles.forEach(articleDetail => frag.append(render.articleCard(articleDetail))) getRef('latest_articles_list').innerHTML = '' getRef('latest_articles_list').append(frag) @@ -1118,7 +1127,6 @@ const frag = document.createDocumentFragment() searchResult.slice(0, 4).forEach((result) => { const { uid, title } = result - console.log(result) frag.append(createElement('a', { textContent: title, attributes: { href: `#/article?articleID=${uid}` }, @@ -1151,6 +1159,14 @@ toggleSearch() } }) + getRef('search_suggestions').addEventListener('click', e => { + if (e.target.value.trim() !== '' && e.code === 'Enter') { + location.hash = `#/explore?type=search&query=${e.target.value.trim()}` + e.target.value = '' + toggleSearch() + } + }) + const slideInLeft = [ { opacity: 0, @@ -1390,7 +1406,7 @@ const isPublished = floGlobals.appObjects['articles'].hasOwnProperty(articleID) getConfirmation(`${isPublished ? 'Update' : 'Publish'} article?`).then(res => { if (res) { - const { title, category, summary, published, tags } = getArticleMetaData() + const { title, category, summary, published, tags, contributors } = getArticleMetaData() floGlobals.appObjects['publishedVc'][vectorClock] = true floGlobals.appObjects.articlesContent[articleID] = content if (isPublished) { @@ -1427,12 +1443,12 @@ if (e.target.closest('.publish-button')) { const button = e.target.closest('.publish-button'); const vc = button.closest('.request-card').dataset.vc; - const { message: { articleID, title } } = floGlobals.generalData[`publishing_requests|${floGlobals.adminID}|${floGlobals.application}`][vc] + const { message: { articleID, title, contributors } } = floGlobals.generalData[`publishing_requests|${floGlobals.adminID}|${floGlobals.application}`][vc] const isPublished = floGlobals.appObjects['articles'].hasOwnProperty(articleID) if (isPublished) setArticleMetaData(floGlobals.appObjects.articles[articleID]) else - setArticleMetaData({ title }) + setArticleMetaData({ title, contributors }) floGlobals.subAdminData = { actionType: 'request', articleID, @@ -1440,7 +1456,7 @@ } getRef('set_article_meta').textContent = isPublished ? 'UPDATE' : 'PUBLISH' getRef('edit_popup__title').textContent = isPublished ? 'Update' : 'Publish' - showPopup('edit_popup') + showPopup('edit_article_meta_popup') } else if (e.target.closest('.preview-button')) { const button = e.target.closest('.preview-button'); const vc = button.closest('.request-card').dataset.vc; @@ -1455,10 +1471,11 @@ } function setArticleMetaData(details) { - const { category, title, tags, summary, published } = details + const { category, title, tags, summary, published, contributors } = details getRef('edit_title').value = title; getRef('edit_summary').value = summary || ''; getRef('edit_category').value = category || ''; + getRef('edit_contributors').value = contributors || []; getRef('edit_tags').value = tags || []; const now = Date.now() getRef('edit_published').value = new Date(published || now).toISOString().substr(0, new Date(published || now).toISOString().indexOf(".")) @@ -1469,6 +1486,7 @@ category: getRef('edit_category').value, summary: getRef('edit_summary').value.trim(), published: new Date(getRef('edit_published').value).getTime(), + contributors: getRef('edit_contributors').value, tags: getRef('edit_tags').value, } } @@ -1483,18 +1501,19 @@ } getRef('set_article_meta').textContent = "UPDATE" getRef('edit_popup__title').textContent = "Update" - showPopup('edit_popup') + showPopup('edit_article_meta_popup') } } function updateArticleMetaData(articleID) { getConfirmation('Update article meta data?').then(res => { if (res) { - const { title, category, summary, published, tags } = getArticleMetaData() + const { title, category, summary, published, tags, contributors } = getArticleMetaData() floGlobals.appObjects['articles'][articleID].category = category floGlobals.appObjects['articles'][articleID].title = title floGlobals.appObjects['articles'][articleID].tags = tags floGlobals.appObjects['articles'][articleID].summary = summary + floGlobals.appObjects['articles'][articleID].contributors = contributors Promise.all([ floCloudAPI.updateObjectData('articles'), floCloudAPI.updateObjectData('publishedVc'),