lbry-desktop/src/renderer/scss/component/_card.scss

385 lines
7.4 KiB
SCSS
Raw Normal View History

2017-04-10 14:32:40 +02:00
.card {
2017-08-18 07:37:35 +02:00
border-radius: var(--card-radius);
2018-03-26 23:32:43 +02:00
display: flex;
flex-direction: column;
2018-10-17 19:14:24 +02:00
margin-right: auto;
margin-left: auto;
max-width: var(--card-max-width);
2018-10-17 19:14:24 +02:00
user-select: text;
2018-10-09 17:01:54 +02:00
white-space: normal;
2018-03-26 23:32:43 +02:00
2018-10-17 19:14:24 +02:00
// .card-media__internal__links should always be inside a card
.card-media__internal-links {
top: $spacing-vertical * 2/3;
right: $spacing-vertical * 2/3;
position: absolute;
}
2018-10-09 17:01:54 +02:00
.card__media {
padding-top: var(--video-aspect-ratio);
}
// Text that is shown if a piece of content has no thumbnail
// We need to do this because the thumbnail uses padding-top: var(--video-aspect-ratio); for dynamic height
// this lets the text sit in the middle instead of the bottom
.card__media-text {
margin-top: calc(var(--video-aspect-ratio) * -1);
}
}
2018-10-17 19:14:24 +02:00
.card--disabled {
opacity: 0.3;
pointer-events: none;
2017-12-01 04:51:55 +01:00
}
2018-10-17 19:14:24 +02:00
.card--link {
cursor: pointer;
2018-10-09 17:01:54 +02:00
}
2018-03-26 23:32:43 +02:00
.card--pending {
opacity: 0.5;
2017-04-10 14:32:40 +02:00
}
2018-10-17 19:14:24 +02:00
.card--section {
margin-top: $spacing-vertical * 2/3;
padding: $spacing-vertical;
background-color: $lbry-white;
}
.card--small {
font-size: 13px;
}
.card--space-between {
display: flex;
justify-content: space-between;
}
2018-03-26 23:32:43 +02:00
.card--wallet-balance {
background: url('../../../static/img/stripe-background.png') no-repeat;
background-size: cover;
color: $lbry-white;
2018-03-26 23:32:43 +02:00
justify-content: space-between;
2018-10-17 19:14:24 +02:00
.card__subtitle,
.card__title {
color: $lbry-white;
2018-03-26 23:32:43 +02:00
}
}
2018-03-26 23:32:43 +02:00
2018-10-14 19:41:19 +02:00
.card__media {
background-color: $lbry-gray-3;
background-position: 50% 50%;
background-repeat: no-repeat;
background-size: cover;
}
.card__media--no-img {
align-items: center;
display: flex;
justify-content: center;
position: relative;
}
.card__media--nsfw {
background-color: $lbry-red-5;
}
2018-10-17 19:14:24 +02:00
.card__actions {
display: flex;
margin-top: $spacing-vertical * 2/3;
2017-04-10 14:32:40 +02:00
2018-10-17 19:14:24 +02:00
&:not(.card__actions--vertical) {
.btn:nth-child(n + 2),
// For buttons wrapped in a tooltip
.tooltip:nth-child(n + 2) {
margin-left: $spacing-vertical / 3;
}
2018-10-09 17:01:54 +02:00
}
}
2018-03-26 23:32:43 +02:00
2018-10-17 19:14:24 +02:00
.card__actions-bottom-corner {
bottom: $spacing-vertical;
right: $spacing-vertical;
position: absolute;
2018-04-17 04:21:19 +02:00
}
2018-10-17 19:14:24 +02:00
.card__actions-top-corner {
2018-03-26 23:32:43 +02:00
display: flex;
2018-10-17 19:14:24 +02:00
justify-content: flex-end;
}
.card__actions--between {
justify-content: space-between;
2018-10-17 19:14:24 +02:00
flex-wrap: wrap;
}
2018-03-26 23:32:43 +02:00
2018-10-17 19:14:24 +02:00
.card__actions--center {
2018-03-26 23:32:43 +02:00
align-items: center;
2018-10-17 19:14:24 +02:00
justify-content: center;
.btn {
margin: 0 $spacing-vertical / 3;
}
}
2018-03-26 23:32:43 +02:00
2018-10-17 19:14:24 +02:00
.card__actions--end {
justify-content: flex-end;
}
2018-03-26 23:32:43 +02:00
2018-10-17 19:14:24 +02:00
.card__actions--no-margin {
margin-top: 0;
}
2018-10-17 19:14:24 +02:00
.card__actions--vertical {
align-items: flex-end;
flex-direction: column;
margin-top: 0;
2018-08-14 05:52:09 +02:00
2018-10-17 19:14:24 +02:00
.btn:not(:first-child) {
margin-top: $spacing-vertical * 1/3;
2018-10-09 17:01:54 +02:00
}
}
2018-10-17 19:14:24 +02:00
.card__content {
margin-top: $spacing-vertical * 2/3;
}
2018-10-17 19:14:24 +02:00
.card__error-msg {
margin: $spacing-vertical * 1/3 0;
padding: $spacing-vertical * 1/3;
2018-10-17 21:42:05 +02:00
background-color: rgba($lbry-red-1, 0.3);
2018-10-17 19:14:24 +02:00
border-left: 2px solid $lbry-red-5;
color: $lbry-red-5;
2017-04-10 14:32:40 +02:00
}
2018-08-03 20:28:11 +02:00
.card__file-properties {
align-items: center;
color: $lbry-gray-5;
2018-10-17 19:14:24 +02:00
display: flex;
.icon + .icon {
margin-left: $spacing-vertical * 1/3;
}
2018-08-03 20:28:11 +02:00
}
2018-10-17 21:42:05 +02:00
// How cards are displayed in lists
2018-10-17 19:14:24 +02:00
.card__list {
.card {
display: inline-block;
margin-bottom: $spacing-vertical * 3/2;
vertical-align: top;
@media only screen and (max-width: $medium-breakpoint) {
width: calc((100% / 4) - (60px / 4)); // 60px === 20px margin-right * three cards
&:not(:nth-child(4n + 1)) {
margin-left: 20px;
}
}
@media only screen and (min-width: $medium-breakpoint) and (max-width: $large-breakpoint) {
width: calc((100% / 6) - (100px / 6));
&:not(:nth-child(6n + 1)) {
margin-left: 20px;
}
}
@media only screen and (min-width: $large-breakpoint) {
width: calc((100% / 8) - (140px / 8));
&:not(:nth-child(8n + 1)) {
margin-left: 20px;
}
}
2018-03-26 23:32:43 +02:00
}
}
2018-10-17 19:14:24 +02:00
.card__list--recommended {
flex: 0 0 var(--recommended-content-width);
padding-left: $spacing-width;
@media (min-width: $medium-breakpoint) {
flex: 0 0 var(--recommended-content-width-medium);
}
}
2017-11-22 21:28:56 +01:00
2018-10-17 19:14:24 +02:00
.card__list--rewards {
column-count: 2;
column-gap: $spacing-vertical * 1/3;
2018-03-26 23:32:43 +02:00
2018-10-17 19:14:24 +02:00
.card {
display: inline-block;
margin: 0 0 $spacing-vertical * 1/3;
width: 100%;
}
}
2018-10-17 19:14:24 +02:00
.card__meta {
color: $lbry-gray-5;
font-size: 14px;
2018-10-17 21:42:05 +02:00
font-weight: 500;
2018-10-17 19:14:24 +02:00
padding-top: $spacing-vertical * 2/3;
}
2018-10-17 19:14:24 +02:00
.card__subtitle {
color: $lbry-gray-5;
2018-10-30 18:12:21 +01:00
font-size: 0.9em;
2018-10-17 19:14:24 +02:00
padding-top: $spacing-vertical * 1/3;
2018-10-17 19:14:24 +02:00
@media (min-width: $large-breakpoint) {
2018-10-14 19:41:19 +02:00
font-size: 1em;
}
2018-03-26 23:32:43 +02:00
}
2018-10-17 19:14:24 +02:00
.card__subtext {
font-size: 0.85em;
padding-top: $spacing-vertical * 1/3;
}
2018-03-26 23:32:43 +02:00
2018-10-17 19:14:24 +02:00
.card__subtext-title {
font-size: 1.1em;
&:not(:first-of-type) {
padding-top: $spacing-vertical * 3/2;
}
}
2018-10-17 19:14:24 +02:00
.card__success-msg {
margin: $spacing-vertical * 1/3 0;
padding: $spacing-vertical * 1/3;
2018-10-19 22:16:39 +02:00
background-color: rgba($lbry-green-1, 0.1);
border-left: 5px solid $lbry-green-5;
color: $lbry-green-5;
2018-03-26 23:32:43 +02:00
}
2018-10-17 19:14:24 +02:00
.card__title {
color: $lbry-black;
font-size: 1.5em;
padding-top: $spacing-vertical * 1/3;
@media (min-width: $large-breakpoint) {
font-size: 1.7em;
}
2018-07-17 19:43:43 +02:00
}
2018-10-17 19:14:24 +02:00
.card__title-identity-icons {
align-items: center;
align-self: flex-start;
display: flex;
}
2018-10-17 19:14:24 +02:00
.card__title--file-card {
// FileCard is slightly different where the title is only slightly bigger than the subtitle
// Slightly bigger than 2 lines for consistent channel placement
2018-10-14 19:41:19 +02:00
font-size: 1em;
2018-10-17 19:14:24 +02:00
height: 3.3em;
@media only screen and (min-width: $large-breakpoint) {
2018-10-14 19:41:19 +02:00
font-size: 1.1em;
2018-10-17 19:14:24 +02:00
}
2018-06-20 05:55:25 +02:00
}
2018-10-17 21:42:05 +02:00
// .card-row is used on the discover page
// It is a list of cards that extend past the right edge of the screen
// There are left/right arrows to scroll the cards and view hidden content
2018-03-26 23:32:43 +02:00
.card-row {
2018-10-17 19:14:24 +02:00
padding-top: $spacing-vertical;
2017-04-12 04:01:45 +02:00
white-space: nowrap;
width: 100%;
2018-03-26 23:32:43 +02:00
&:last-of-type {
padding-bottom: $spacing-vertical * 2/3;
}
2017-04-12 04:01:45 +02:00
}
2018-03-26 23:32:43 +02:00
2017-04-10 14:32:40 +02:00
.card-row__header {
2018-03-26 23:32:43 +02:00
display: flex;
flex-direction: row;
justify-content: space-between;
// specific padding-left styling is needed here
// this needs to be used on a page with noPadding
// doing so allows the content to scroll to the edge of the screen
padding-left: $spacing-width;
&.card-row__header--sub-component {
padding-left: 0;
}
2018-03-26 23:32:43 +02:00
}
2018-10-17 19:14:24 +02:00
.card-row__message {
padding: 0 $spacing-width;
white-space: normal;
2018-03-26 23:32:43 +02:00
}
.card-row__scroll-btns {
display: flex;
padding-right: $spacing-width * 1/3;
@media (min-width: $medium-breakpoint) {
padding-right: $spacing-width;
}
&.card-row__scroll-btns--sub-component {
@media (min-width: $medium-breakpoint) {
padding-right: 0;
}
}
2017-07-29 20:12:13 +02:00
}
2018-01-04 06:05:20 +01:00
.card-row__scrollhouse {
2018-03-26 23:32:43 +02:00
padding-top: $spacing-vertical * 2/3;
padding-bottom: $spacing-vertical * 1/6;
2018-03-26 23:32:43 +02:00
overflow: hidden;
.card {
display: inline-block;
overflow-y: visible;
2018-10-17 19:14:24 +02:00
vertical-align: top;
width: calc((100% / 4) - 34px); // 31 px to handle to padding between cards
2018-10-17 19:14:24 +02:00
&:not(:first-of-type) {
margin-left: 20px;
}
2018-10-17 19:14:24 +02:00
&:first-of-type {
margin-left: $spacing-width;
}
2018-10-17 19:14:24 +02:00
&:last-of-type {
margin-right: $spacing-width;
}
2018-10-17 19:14:24 +02:00
@media only screen and (min-width: $medium-breakpoint) {
width: calc((100% / 6) - 29px);
}
@media only screen and (min-width: $large-breakpoint) {
2018-10-17 19:14:24 +02:00
width: calc((100% / 8) - 27px);
2018-03-26 23:32:43 +02:00
}
}
&.card-row__scrollhouse--sub-component {
.card:first-of-type {
margin-left: 0;
}
}
}
2018-01-04 06:05:20 +01:00
2018-10-17 19:14:24 +02:00
.card-row__title {
align-items: center;
display: flex;
font-size: 18px;
2018-10-17 21:42:05 +02:00
font-weight: 600;
2018-10-17 19:14:24 +02:00
line-height: 24px;
2018-07-25 03:10:33 +02:00
2018-10-17 19:14:24 +02:00
@media only screen and (min-width: $medium-breakpoint) {
font-size: 20px;
}
}