From b28d1e27ba89aa215752f9d2fbbe64320deb077a Mon Sep 17 00:00:00 2001 From: sairaj mote Date: Wed, 23 Jun 2021 23:14:55 +0530 Subject: [PATCH] Component update -- Rebuilt strip-select from scratch with better functionality --- components.js | 499 ++++++++++++++++++++--------------------------- css/main.css | 10 +- css/main.min.css | 2 +- css/main.scss | 8 +- index.html | 21 +- 5 files changed, 246 insertions(+), 294 deletions(-) diff --git a/components.js b/components.js index 71ff59a..789f584 100644 --- a/components.js +++ b/components.js @@ -1590,328 +1590,247 @@ customElements.define('sm-option', class extends HTMLElement { } }) -// select -const smStripSelect = document.createElement('template') -smStripSelect.innerHTML = ` - -
-
- - Previous - - -
- -
- - Next - - -
-
`; -customElements.define('sm-strip-select', class extends HTMLElement { +
+
+ +
+ +
+ +
+
+ +` +customElements.define('strip-select', class extends HTMLElement{ constructor() { super() this.attachShadow({ mode: 'open' - }).append(smStripSelect.content.cloneNode(true)) - } - static get observedAttributes() { - return ['value'] + }).append(stripSelect.content.cloneNode(true)) + this.stripSelect = this.shadowRoot.querySelector('.strip-select') + this.slottedOptions + this._value + this.scrollDistance = 200 } get value() { - return this.getAttribute('value') + return this._value } - set value(val) { - this.setAttribute('value', val) + randString = (length) => { + let result = ''; + const characters = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789'; + for (let i = 0; i < length; i++) + result += characters.charAt(Math.floor(Math.random() * characters.length)); + return result; + } + fireEvent = () => { + this.dispatchEvent( + new CustomEvent("change", { + bubbles: true, + composed: true, + detail: { + value: this.value + } + }) + ) } scrollLeft = () => { - this.select.scrollBy({ - top: 0, + this.stripSelect.scrollBy({ left: -this.scrollDistance, behavior: 'smooth' }) } scrollRight = () => { - this.select.scrollBy({ - top: 0, + this.stripSelect.scrollBy({ left: this.scrollDistance, behavior: 'smooth' }) } connectedCallback() { - let previousOption, - slot = this.shadowRoot.querySelector('slot'); - this.selectContainer = this.shadowRoot.querySelector('.select-container') - this.select = this.shadowRoot.querySelector('.select') - this.nextArrow = this.shadowRoot.querySelector('.next-item') - this.previousArrow = this.shadowRoot.querySelector('.previous-item') - this.nextGradient = this.shadowRoot.querySelector('.right') - this.previousGradient = this.shadowRoot.querySelector('.left') - this.selectOptions - this.scrollDistance = this.selectContainer.getBoundingClientRect().width - const firstElementObserver = new IntersectionObserver(entries => { - if (entries[0].isIntersecting) { - this.previousArrow.classList.add('hide') - this.previousGradient.classList.add('hide') - } else { - this.previousArrow.classList.remove('hide') - this.previousGradient.classList.remove('hide') - } - }, { - root: this.selectContainer, - threshold: 0.95 - }) - const lastElementObserver = new IntersectionObserver(entries => { - if (entries[0].isIntersecting) { - this.nextArrow.classList.add('hide') - this.nextGradient.classList.add('hide') - } else { - this.nextArrow.classList.remove('hide') - this.nextGradient.classList.remove('hide') - } - }, { - root: this.selectContainer, - threshold: 0.95 - }) - - const selectObserver = new IntersectionObserver(entries => { - if (entries[0].isIntersecting) { - this.scrollDistance = this.selectContainer.getBoundingClientRect().width - } - }) - - selectObserver.observe(this.selectContainer) - this.addEventListener('optionSelected', e => { - if (previousOption === e.target) return; - if (previousOption) - previousOption.classList.remove('active') - e.target.classList.add('active') - e.target.scrollIntoView({ - behavior: 'smooth', - inline: 'center', - block: 'nearest' - }) - this.setAttribute('value', e.detail.value) - this.dispatchEvent(new CustomEvent('change', { - bubbles: true, - composed: true - })) - previousOption = e.target; - }) + const slot = this.shadowRoot.querySelector('slot') + const groupName = this.randString(8) + const coverLeft = this.shadowRoot.querySelector('.cover--left') + const coverRight = this.shadowRoot.querySelector('.cover--right') + const navButtonLeft = this.shadowRoot.querySelector('.nav-button--left') + const navButtonRight = this.shadowRoot.querySelector('.nav-button--right') slot.addEventListener('slotchange', e => { - this.selectOptions = slot.assignedElements() - firstElementObserver.observe(this.selectOptions[0]) - lastElementObserver.observe(this.selectOptions[this.selectOptions.length - 1]) - if (this.selectOptions[0]) { - let firstElement = this.selectOptions[0]; - this.setAttribute('value', firstElement.getAttribute('value')) - firstElement.classList.add('active') - previousOption = firstElement; - } - }); - this.nextArrow.addEventListener('click', this.scrollRight) - this.previousArrow.addEventListener('click', this.scrollLeft) - } - - disconnectedCallback() { - this.nextArrow.removeEventListener('click', this.scrollRight) - this.previousArrow.removeEventListener('click', this.scrollLeft) - } -}) - -// option -const smStripOption = document.createElement('template') -smStripOption.innerHTML = ` - -
- -
`; -customElements.define('sm-strip-option', class extends HTMLElement { - constructor() { - super() - this.attachShadow({ - mode: 'open' - }).append(smStripOption.content.cloneNode(true)) - } - sendDetails() { - let optionSelected = new CustomEvent('optionSelected', { - bubbles: true, - composed: true, - detail: { - text: this.textContent, - value: this.getAttribute('value') + slot.assignedElements().forEach(elem => { + const label = document.createElement('label') + const input = document.createElement('input') + label.className = 'strip-option' + label.tabIndex = 0 + input.type = 'radio' + input.name = groupName + input.setAttribute('value', elem.getAttribute('value')) + label.append(input, elem) + this.stripSelect.append(label) + }) + slot.remove() + firstOptionObserver.observe(this.stripSelect.firstElementChild) + lastOptionObserver.observe(this.stripSelect.lastElementChild) + }) + this.stripSelect.addEventListener('change', e => { + this._value = e.target.value + e.target.closest('label').scrollIntoView({behavior: "smooth", block: "start", inline: "center"}) + Array.from(this.stripSelect.children).forEach(elem => elem.removeAttribute('active')) + e.target.closest('.strip-option').setAttribute('active', '') + this.fireEvent() + }) + this.stripSelect.addEventListener('keyup', e => { + if (e.key === 'Enter' || e.key === 'Space') { + e.target.click() } }) - this.dispatchEvent(optionSelected) - } - - connectedCallback() { - this.addEventListener('click', e => { - this.sendDetails() + const widthObserver = new ResizeObserver(entries => { + entries.forEach(entry => { + if(entry.contentBoxSize) { + const contentBoxSize = Array.isArray(entry.contentBoxSize) ? entry.contentBoxSize[0] : entry.contentBoxSize; + this.style.width = `${contentBoxSize.inlineSize}px` + } else { + this.style.width = `${contentRect.width}px` + } + }) }) - this.addEventListener('keyup', e => { - if (e.code === 'Enter' || e.code === 'Space') { - e.preventDefault() - this.sendDetails(false) - } + widthObserver.observe(this.parentNode) + + const firstOptionObserver = new IntersectionObserver(entries => { + entries.forEach(entry => { + if (entry.isIntersecting) { + navButtonLeft.classList.add('hide') + coverLeft.classList.add('hide') + } + else { + navButtonLeft.classList.remove('hide') + coverLeft.classList.remove('hide') + } + }) + }, + { + threshold: 0.9 }) - if (this.hasAttribute('default')) { - setTimeout(() => { - this.sendDetails() - }, 0); - } + const lastOptionObserver = new IntersectionObserver(entries => { + entries.forEach(entry => { + if (entry.isIntersecting) { + navButtonRight.classList.add('hide') + coverRight.classList.add('hide') + } + else { + navButtonRight.classList.remove('hide') + coverRight.classList.remove('hide') + } + }) + }, + { + threshold: 0.9 + }) + navButtonLeft.addEventListener('click', this.scrollLeft) + navButtonRight.addEventListener('click', this.scrollRight) } }) diff --git a/css/main.css b/css/main.css index fe57fe2..fa84ee5 100644 --- a/css/main.css +++ b/css/main.css @@ -300,7 +300,7 @@ ul { .page-layout { position: relative; display: grid; - grid-template-columns: 1rem 1fr 1rem; + grid-template-columns: 1rem minmax(0, 1fr) 1rem; } .page-layout > * { grid-column: 2/3; @@ -382,6 +382,10 @@ ul { padding-bottom: 2rem; } +.page__title { + font-size: 2rem; +} + #search_section { position: relative; display: grid; @@ -658,6 +662,10 @@ sm-option { padding: 1.5rem; } + .page__title { + font-size: 3rem; + } + .torrent-card { padding: 1.5rem; } diff --git a/css/main.min.css b/css/main.min.css index 7bd1ec3..ead93f7 100644 --- a/css/main.min.css +++ b/css/main.min.css @@ -1 +1 @@ -a,button{color:inherit}.interact,.theme-switcher,.torrent-card,button{cursor:pointer;-webkit-tap-highlight-color:transparent}*{padding:0;margin:0;box-sizing:border-box;font-family:Inter,sans-serif}:root{font-size:clamp(1rem,1.2vmax,3rem)}body,html{height:100%;scroll-behavior:smooth}body{--accent-color:#304FFE;--light-shade:rgba(var(--text-color), 0.06);--text-color:17,17,17;--text-color-light:100,100,100;--foreground-color:255,255,255;--background-color:#F6f6f6;--error-color:red;--green:#00843b;color:rgba(var(--text-color),1);background:var(--background-color);display:flex;flex-direction:column}body[data-theme=dark]{--accent-color:#2353FF;--green:#13ff5a;--text-color:240,240,240;--text-color-light:170,170,170;--foreground-color:20,20,20;--background-color:#0a0a0a;--error-color:rgb(255, 106, 106)}main{flex:1}.full-bleed{grid-column:1/4}.h1{font-size:2.5rem}.h2{font-size:2rem}.h3{font-size:1.4rem}.h4{font-size:1rem}.h5{font-size:.8rem}.uppercase{text-transform:uppercase}.capitalize{text-transform:capitalize}p{font-size:.8;max-width:60ch;line-height:1.5;color:rgba(var(--text-color),.8)}.app-name,button{font-weight:500;font-size:.9rem}img{object-fit:cover}a{text-decoration:none}a:focus-visible{box-shadow:0 0 0 .1rem rgba(var(--text-color),1) inset}button{position:relative;display:inline-flex;overflow:hidden;align-items:center;background:0 0;outline:0;border-radius:.2rem;padding:.5rem .6rem;border:none}button:focus-visible{outline:solid rgba(var(--text-color),1)}a:not([href=""]):any-link{position:relative;display:inline-flex;align-items:center;background:0 0;cursor:pointer;outline:0;font-weight:500;font-size:.8rem;border-radius:.3rem;padding:.5rem .6rem;align-self:flex-start;text-decoration:none;color:rgba(var(--text-color),.7);-webkit-tap-highlight-color:transparent;background-color:rgba(var(--text-color),.06)}a:not([href=""]):any-link .icon{margin-right:.3rem;height:1.2rem}a:any-link:focus-visible{outline:solid rgba(var(--text-color),1)}sm-button{--border-radius:0.3rem}ul{list-style:none}.hide{opacity:0;pointer-events:none}.hide-completely{display:none!important}.no-transformations{transform:none!important}.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;-moz-hyphens:auto;-webkit-hyphens:auto;hyphens:auto}.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}.direction-column{flex-direction:column}.space-between{justify-content:space-between}.ripple{position:absolute;border-radius:50%;transform:scale(0);background:rgba(var(--text-color),.16);pointer-events:none}.interact{position:relative;overflow:hidden}.observe-empty-state:empty{display:none}.observe-empty-state:not(:empty)~.empty-state{display:none}.icon{width:1.5rem;height:1.5rem;fill:rgba(var(--text-color),.9)}.page-layout{position:relative;display:grid;grid-template-columns:1rem 1fr 1rem}.page-layout>*{grid-column:2/3}.popup__header{display:grid;gap:.5rem;width:100%;padding:1rem 1.5rem;align-items:center;grid-template-columns:auto 1fr}.popup__header__close{padding:.5rem;cursor:pointer}.button--primary{color:#fff;font-weight:500;padding:.5rem 1.2rem;background-color:var(--accent-color)}.auto-grid-2{gap:2rem;grid-template-columns:1fr}#error_page,#loading_page{position:relative;display:grid;height:100%;place-content:center;justify-items:center}#main_header{position:relative;display:flex;padding:1rem;align-items:center;justify-content:space-between;grid-template-columns:repeat(3,1fr)}#main_header__logo{height:1.8rem;width:1.8rem}.theme-switcher{position:relative;justify-self:flex-end;width:1.5rem;height:1.5rem}.theme-switcher .icon{position:absolute;transition:transform .6s}.theme-switcher__checkbox{display:none}.theme-switcher__checkbox:checked~.moon-icon{transform:scale(0) rotate(90deg)}.theme-switcher__checkbox:not(:checked)~.sun-icon{transform:scale(0) rotate(-90deg)}.page{padding-bottom:2rem}#search_section{position:relative;display:grid;gap:.5rem 0;padding:4rem 0;justify-items:center}.app-icon{height:3rem;width:3rem}.app-name{margin-bottom:1rem;color:rgba(var(--text-color),.7)}#search_torrent{margin-bottom:1rem}.search-torrent{width:min(28rem,100%);--border-radius:2rem;--background:rgba(var(--text-color), 0.06)}.search-torrent .icon{height:1.2rem;fill:rgba(var(--text-color),.7)}.torrent-container{padding:1.5rem 0;display:grid;gap:.5rem;padding-bottom:4rem}.torrent-card{display:grid;gap:0 1rem;align-items:center;grid-template-columns:auto 1fr auto;padding:1rem;border-radius:.3rem;background-color:rgba(var(--text-color),.06)}.torrent-card .torrent-type-icon{padding:.8rem}.torrent-card__icon .icon{height:1.4rem;width:1.4rem}.torrent-card__title{font-weight:600;font-size:1.1rem;margin-bottom:.5rem}.torrent-card__tags,.torrent-card__uploader{overflow:hidden;white-space:nowrap;text-overflow:ellipsis;font-size:.85rem;color:rgba(var(--text-color),.7)}#torrent__description,#torrent_tags,#torrent_uploader,.progress-percent,.torrent-card__description{color:rgba(var(--text-color),.8)}.torrent-card__description{font-size:.9rem;overflow:hidden;display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical}.torrent-card__size{font-weight:500}.torrent-card__download-button{justify-self:flex-end;align-self:flex-start;background-color:rgba(var(--text-color),.1)}.torrent-card__download-button .icon{height:1.4rem;margin-right:.5rem}.progress-indicator{justify-self:flex-end;height:2.3rem;padding:0 .6rem}.progress-percent{font-size:.9rem;font-weight:500}.progress-loader{height:1.2rem;width:1.2rem;fill:none;padding:.1rem;stroke-width:16;overflow:visible;margin-right:.5rem;stroke-dasharray:201;stroke-dashoffset:201;transform:rotate(-90deg);stroke:var(--accent-color);transition:stroke-dashoffset .3s}#torrent_popup{--width:min(56rem, 100%)}.torrent-preview{display:grid}.torrent-preview__info-section{display:flex;flex-direction:column;align-content:flex-start}.torrent-type-icon{display:flex;padding:1rem;border-radius:50%;align-items:center;justify-content:center;align-self:flex-start;aspect-ratio:1/1;flex-shrink:0;background-color:var(--accent-color)}#main_footer,#torrent_type_icon{background-color:rgba(var(--text-color),.06)}.torrent-type-icon .icon{fill:#fff}#torrent_type_icon{align-self:center;justify-self:center;padding:2rem}#torrent_type_icon .icon{height:3rem;width:3rem;fill:rgba(var(--text-color),.3)}#torrent_tags,#torrent_uploader{display:flex;width:100%;font-size:.85rem;margin-bottom:.3rem}#torrent_name{font-size:1.5rem;margin-bottom:1rem}#torrent__description{font-size:.9rem}#torrent_uploader{font-weight:500;line-height:1.7;margin-top:1rem;width:auto;border-radius:1.5rem;padding:.3rem .8rem;align-self:flex-start;background-color:rgba(var(--text-color),.1)}#torrent_download_button{color:#fff;width:100%;flex-shrink:0;padding:.7rem;margin-top:2rem;justify-content:center;background-color:var(--accent-color)}#torrent_download_button .icon{fill:#fff}#advance_search_section{align-items:flex-start;padding:1rem 0;margin-bottom:1rem}#advance_search_switch{justify-self:flex-start}#advance_search_switch h4{margin-left:1rem}sm-option{font-size:.9rem}#main_footer{padding:3rem 0}@media only screen and (max-width:640px){.popup__header{padding:0 1.5rem 0 .5rem}.torrent-card{grid-template-columns:auto 1fr}.torrent-card__icon{margin:0}.torrent-card__title{font-size:.95rem}.torrent-card__tags,.torrent-card__uploader{font-size:.7rem}.torrent-card__description{display:none}.torrent-card .progress-indicator,.torrent-card__download-button{margin-top:1rem;grid-column:2/3}#torrent_type_icon{margin-bottom:3rem}#torrent_tags{font-size:.8rem}}@media only screen and (min-width:640px){.popup__header{padding:1.5rem 1.5rem 0}.auto-grid-2{grid-template-columns:1fr 1fr}.page-layout{grid-template-columns:1fr 90vw 1fr}#main_header,.torrent-card{padding:1.5rem}#torrent_popup{--min-height:80vh}.torrent-preview{gap:3rem;grid-template-columns:22rem 1fr}}@media only screen and (min-width:1280px){.page-layout{grid-template-columns:1fr 80vw 1fr}}@media (any-hover:hover){::-webkit-scrollbar{width:.5rem;height:.5rem}::-webkit-scrollbar-thumb{background:rgba(var(--text-color),.3);border-radius:1rem}::-webkit-scrollbar-thumb:hover{background:rgba(var(--text-color),.5)}} \ No newline at end of file +a,button{color:inherit}.interact,.theme-switcher,.torrent-card,button{cursor:pointer;-webkit-tap-highlight-color:transparent}*{padding:0;margin:0;box-sizing:border-box;font-family:Inter,sans-serif}:root{font-size:clamp(1rem,1.2vmax,3rem)}body,html{height:100%;scroll-behavior:smooth}body{--accent-color:#304FFE;--light-shade:rgba(var(--text-color), 0.06);--text-color:17,17,17;--text-color-light:100,100,100;--foreground-color:255,255,255;--background-color:#F6f6f6;--error-color:red;--green:#00843b;color:rgba(var(--text-color),1);background:var(--background-color);display:flex;flex-direction:column}body[data-theme=dark]{--accent-color:#2353FF;--green:#13ff5a;--text-color:240,240,240;--text-color-light:170,170,170;--foreground-color:20,20,20;--background-color:#0a0a0a;--error-color:rgb(255, 106, 106)}main{flex:1}.full-bleed{grid-column:1/4}.h1{font-size:2.5rem}.h2,.page__title{font-size:2rem}.h3{font-size:1.4rem}.h4{font-size:1rem}.h5{font-size:.8rem}.uppercase{text-transform:uppercase}.capitalize{text-transform:capitalize}p{font-size:.8;max-width:60ch;line-height:1.5;color:rgba(var(--text-color),.8)}img{object-fit:cover}a{text-decoration:none}a:focus-visible{box-shadow:0 0 0 .1rem rgba(var(--text-color),1) inset}button{position:relative;display:inline-flex;overflow:hidden;align-items:center;background:0 0;outline:0;font-size:.9rem;font-weight:500;border-radius:.2rem;padding:.5rem .6rem;border:none}button:focus-visible{outline:solid rgba(var(--text-color),1)}a:not([href=""]):any-link{position:relative;display:inline-flex;align-items:center;background:0 0;cursor:pointer;outline:0;font-weight:500;font-size:.8rem;border-radius:.3rem;padding:.5rem .6rem;align-self:flex-start;text-decoration:none;color:rgba(var(--text-color),.7);-webkit-tap-highlight-color:transparent;background-color:rgba(var(--text-color),.06)}a:not([href=""]):any-link .icon{margin-right:.3rem;height:1.2rem}a:any-link:focus-visible{outline:solid rgba(var(--text-color),1)}sm-button{--border-radius:0.3rem}ul{list-style:none}.hide{opacity:0;pointer-events:none}.hide-completely{display:none!important}.no-transformations{transform:none!important}.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;-moz-hyphens:auto;-webkit-hyphens:auto;hyphens:auto}.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}.direction-column{flex-direction:column}.space-between{justify-content:space-between}.ripple{position:absolute;border-radius:50%;transform:scale(0);background:rgba(var(--text-color),.16);pointer-events:none}.interact{position:relative;overflow:hidden}.observe-empty-state:empty{display:none}.observe-empty-state:not(:empty)~.empty-state{display:none}.icon{width:1.5rem;height:1.5rem;fill:rgba(var(--text-color),.9)}.page-layout{position:relative;display:grid;grid-template-columns:1rem minmax(0,1fr) 1rem}.page-layout>*{grid-column:2/3}.popup__header{display:grid;gap:.5rem;width:100%;padding:1rem 1.5rem;align-items:center;grid-template-columns:auto 1fr}.popup__header__close{padding:.5rem;cursor:pointer}.button--primary{color:#fff;font-weight:500;padding:.5rem 1.2rem;background-color:var(--accent-color)}.auto-grid-2{gap:2rem;grid-template-columns:1fr}#error_page,#loading_page{position:relative;display:grid;height:100%;place-content:center;justify-items:center}#main_header{position:relative;display:flex;padding:1rem;align-items:center;justify-content:space-between;grid-template-columns:repeat(3,1fr)}#main_header__logo{height:1.8rem;width:1.8rem}.theme-switcher{position:relative;justify-self:flex-end;width:1.5rem;height:1.5rem}.theme-switcher .icon{position:absolute;transition:transform .6s}.theme-switcher__checkbox{display:none}.theme-switcher__checkbox:checked~.moon-icon{transform:scale(0) rotate(90deg)}.theme-switcher__checkbox:not(:checked)~.sun-icon{transform:scale(0) rotate(-90deg)}.page{padding-bottom:2rem}#search_section{position:relative;display:grid;gap:.5rem 0;padding:4rem 0;justify-items:center}.app-icon{height:3rem;width:3rem}.app-name{font-weight:500;margin-bottom:1rem;font-size:.9rem;color:rgba(var(--text-color),.7)}#search_torrent{margin-bottom:1rem}.search-torrent{width:min(28rem,100%);--border-radius:2rem;--background:rgba(var(--text-color), 0.06)}.search-torrent .icon{height:1.2rem;fill:rgba(var(--text-color),.7)}.torrent-container{padding:1.5rem 0;display:grid;gap:.5rem;padding-bottom:4rem}.torrent-card{display:grid;gap:0 1rem;align-items:center;grid-template-columns:auto 1fr auto;padding:1rem;border-radius:.3rem;background-color:rgba(var(--text-color),.06)}.torrent-card .torrent-type-icon{padding:.8rem}.torrent-card__icon .icon{height:1.4rem;width:1.4rem}.torrent-card__title{font-weight:600;font-size:1.1rem;margin-bottom:.5rem}.torrent-card__tags,.torrent-card__uploader{overflow:hidden;white-space:nowrap;text-overflow:ellipsis;font-size:.85rem;color:rgba(var(--text-color),.7)}#torrent__description,#torrent_tags,#torrent_uploader,.progress-percent,.torrent-card__description{color:rgba(var(--text-color),.8)}.torrent-card__description{font-size:.9rem;overflow:hidden;display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical}.torrent-card__size{font-weight:500}.torrent-card__download-button{justify-self:flex-end;align-self:flex-start;background-color:rgba(var(--text-color),.1)}.torrent-card__download-button .icon{height:1.4rem;margin-right:.5rem}.progress-indicator{justify-self:flex-end;height:2.3rem;padding:0 .6rem}.progress-percent{font-size:.9rem;font-weight:500}.progress-loader{height:1.2rem;width:1.2rem;fill:none;padding:.1rem;stroke-width:16;overflow:visible;margin-right:.5rem;stroke-dasharray:201;stroke-dashoffset:201;transform:rotate(-90deg);stroke:var(--accent-color);transition:stroke-dashoffset .3s}#torrent_popup{--width:min(56rem, 100%)}.torrent-preview{display:grid}.torrent-preview__info-section{display:flex;flex-direction:column;align-content:flex-start}.torrent-type-icon{display:flex;padding:1rem;border-radius:50%;align-items:center;justify-content:center;align-self:flex-start;aspect-ratio:1/1;flex-shrink:0;background-color:var(--accent-color)}#main_footer,#torrent_type_icon{background-color:rgba(var(--text-color),.06)}.torrent-type-icon .icon{fill:#fff}#torrent_type_icon{align-self:center;justify-self:center;padding:2rem}#torrent_type_icon .icon{height:3rem;width:3rem;fill:rgba(var(--text-color),.3)}#torrent_tags,#torrent_uploader{display:flex;width:100%;font-size:.85rem;margin-bottom:.3rem}#torrent_name{font-size:1.5rem;margin-bottom:1rem}#torrent__description{font-size:.9rem}#torrent_uploader{font-weight:500;line-height:1.7;margin-top:1rem;width:auto;border-radius:1.5rem;padding:.3rem .8rem;align-self:flex-start;background-color:rgba(var(--text-color),.1)}#torrent_download_button{color:#fff;width:100%;flex-shrink:0;padding:.7rem;margin-top:2rem;justify-content:center;background-color:var(--accent-color)}#torrent_download_button .icon{fill:#fff}#advance_search_section{align-items:flex-start;padding:1rem 0;margin-bottom:1rem}#advance_search_switch{justify-self:flex-start}#advance_search_switch h4{margin-left:1rem}sm-option{font-size:.9rem}#main_footer{padding:3rem 0}@media only screen and (max-width:640px){.popup__header{padding:0 1.5rem 0 .5rem}.torrent-card{grid-template-columns:auto 1fr}.torrent-card__icon{margin:0}.torrent-card__title{font-size:.95rem}.torrent-card__tags,.torrent-card__uploader{font-size:.7rem}.torrent-card__description{display:none}.torrent-card .progress-indicator,.torrent-card__download-button{margin-top:1rem;grid-column:2/3}#torrent_type_icon{margin-bottom:3rem}#torrent_tags{font-size:.8rem}}@media only screen and (min-width:640px){.popup__header{padding:1.5rem 1.5rem 0}#main_header,.torrent-card{padding:1.5rem}.auto-grid-2{grid-template-columns:1fr 1fr}.page-layout{grid-template-columns:1fr 90vw 1fr}.page__title{font-size:3rem}#torrent_popup{--min-height:80vh}.torrent-preview{gap:3rem;grid-template-columns:22rem 1fr}}@media only screen and (min-width:1280px){.page-layout{grid-template-columns:1fr 80vw 1fr}}@media (any-hover:hover){::-webkit-scrollbar{width:.5rem;height:.5rem}::-webkit-scrollbar-thumb{background:rgba(var(--text-color),.3);border-radius:1rem}::-webkit-scrollbar-thumb:hover{background:rgba(var(--text-color),.5)}} \ No newline at end of file diff --git a/css/main.scss b/css/main.scss index 037b381..8066a40 100644 --- a/css/main.scss +++ b/css/main.scss @@ -250,7 +250,7 @@ ul{ .page-layout{ position: relative; display: grid; - grid-template-columns: 1rem 1fr 1rem; + grid-template-columns: 1rem minmax(0, 1fr) 1rem; & > * { grid-column: 2/3; } @@ -328,6 +328,9 @@ ul{ .page{ padding-bottom: 2rem; } +.page__title{ + font-size: 2rem; +} #search_section{ position: relative; @@ -580,6 +583,9 @@ sm-option{ #main_header{ padding: 1.5rem; } + .page__title{ + font-size: 3rem; + } .torrent-card{ padding: 1.5rem; } diff --git a/index.html b/index.html index 5d56265..89fe7bb 100644 --- a/index.html +++ b/index.html @@ -79,7 +79,7 @@