From 39295c0bea17229ceb5764845c334ad0c9dea2c8 Mon Sep 17 00:00:00 2001 From: ludwiczakpawel Date: Thu, 4 Jun 2020 16:12:17 +0200 Subject: [PATCH] Layout updates (#8107) * flare tag line height * . * init * widgets * widgets lists * new tabs on home * instantclick * . * rethinking css * . * . * empty space * campaign widget * . * merge * . * update layout * fix sidebars on home page * . * fix onboarding x * spec * test * test * better handling ads * . * spec * card styling * . * i dont know what have i broken --- .../initializers/initializeAllFollowButts.js | 8 +- .../initializers/initializeBaseUserData.js | 4 +- .../initializers/initializeSettings.js | 13 +- app/assets/stylesheets/articles.scss | 20 +- app/assets/stylesheets/base/layout.scss | 192 ++++++++++++-- app/assets/stylesheets/components/cards.scss | 17 +- .../stylesheets/components/stories.scss | 2 +- app/assets/stylesheets/config/_colors.scss | 9 +- app/assets/stylesheets/onboarding.scss | 1 + app/assets/stylesheets/themes/hacker.scss | 3 +- app/assets/stylesheets/themes/minimal.scss | 3 +- app/assets/stylesheets/themes/night.scss | 3 +- app/assets/stylesheets/themes/pink.scss | 5 +- app/assets/stylesheets/top-bar.scss | 12 +- .../stylesheets/views/article-form.scss | 136 +++++----- app/assets/stylesheets/views/article.scss | 22 +- app/assets/stylesheets/widgets.scss | 18 +- .../__snapshots__/articleForm.test.jsx.snap | 246 +++++++++--------- app/javascript/article-form/articleForm.jsx | 58 ++--- .../article-form/components/Form.jsx | 2 +- .../article-form/components/Header.jsx | 2 +- .../article-form/components/Help.jsx | 2 +- .../article-form/components/PageTitle.jsx | 4 +- .../article-form/components/Preview.jsx | 2 +- .../components/__tests__/Help.test.jsx | 14 +- .../__snapshots__/Form.test.jsx.snap | 4 +- .../__snapshots__/Help.test.jsx.snap | 2 +- .../__snapshots__/Preview.test.jsx.snap | 2 +- app/javascript/leftSidebar/TagsFollowed.jsx | 4 +- .../__snapshots__/TagsFollowed.test.jsx.snap | 88 ++----- .../__snapshots__/Onboarding.test.jsx.snap | 6 +- .../onboarding/components/FollowTags.jsx | 2 +- .../sidebar-widget/SidebarWidget.jsx | 2 +- .../__snapshots__/sidebarUser.test.jsx.snap | 2 +- .../__tests__/sidebarUser.test.jsx | 4 +- app/javascript/sidebar-widget/sidebarUser.jsx | 2 +- app/views/articles/_sidebar.html.erb | 10 +- .../articles/_sidebar_additional.html.erb | 69 ++--- app/views/articles/_sidebar_campaign.html.erb | 28 +- app/views/articles/_sidebar_nav.html.erb | 200 +++++++------- app/views/articles/_v2_form.html.erb | 63 +++-- app/views/articles/_widget_list_item.html.erb | 8 +- app/views/articles/index.html.erb | 7 +- .../_providers_sidebar.html.erb | 2 +- app/views/users/edit.html.erb | 61 +++-- .../user_visits_articles_by_tag_spec.rb | 4 +- .../dashboards/user_followers_display_spec.rb | 4 +- .../homepage/user_visits_homepage_spec.rb | 10 +- .../notifications/notifications_page_spec.rb | 4 +- .../user_views_an_organization_spec.rb | 4 +- .../search/display_users_search_spec.rb | 2 +- .../system/search/user_searches_users_spec.rb | 8 +- spec/system/user/view_user_index_spec.rb | 4 +- 53 files changed, 763 insertions(+), 641 deletions(-) diff --git a/app/assets/javascripts/initializers/initializeAllFollowButts.js b/app/assets/javascripts/initializers/initializeAllFollowButts.js index d3f3e309d..6f6fd5dd3 100644 --- a/app/assets/javascripts/initializers/initializeAllFollowButts.js +++ b/app/assets/javascripts/initializers/initializeAllFollowButts.js @@ -207,7 +207,7 @@ function assignState(butt, newState) { addFollowText(butt, style); } else if (newState === 'self') { butt.dataset.verb = 'self'; - butt.textContent = 'EDIT PROFILE'; + butt.textContent = 'Edit profile'; } else { butt.dataset.verb = 'follow'; addFollowingText(butt, style); @@ -219,9 +219,9 @@ function addFollowText(butt, style) { if (style === 'small') { butt.textContent = '+'; } else if (style === 'follow-back') { - butt.textContent = '+ FOLLOW BACK'; + butt.textContent = 'Follow back'; } else { - butt.textContent = '+ FOLLOW'; + butt.textContent = 'Follow'; } } @@ -229,6 +229,6 @@ function addFollowingText(butt, style) { if (style === 'small') { butt.textContent = '✓'; } else { - butt.textContent = '✓ FOLLOWING'; + butt.textContent = 'Following'; } } diff --git a/app/assets/javascripts/initializers/initializeBaseUserData.js b/app/assets/javascripts/initializers/initializeBaseUserData.js index 19a9552ca..3c8118628 100644 --- a/app/assets/javascripts/initializers/initializeBaseUserData.js +++ b/app/assets/javascripts/initializers/initializeBaseUserData.js @@ -20,8 +20,8 @@ function initializeUserSidebar(user) { let followedTags = JSON.parse(user.followed_tags); const tagSeparatorLabel = followedTags.length === 0 - ? 'Follow tags to improve your feed' - : 'Other Popular Tags'; + ? 'FOLLOW TAGS TO IMPROVE YOUR FEED' + : 'OTHER POPULAR TAGS'; followedTags.forEach((tag) => { const element = document.getElementById( diff --git a/app/assets/javascripts/initializers/initializeSettings.js b/app/assets/javascripts/initializers/initializeSettings.js index 37d216c41..7223795b7 100644 --- a/app/assets/javascripts/initializers/initializeSettings.js +++ b/app/assets/javascripts/initializers/initializeSettings.js @@ -1,4 +1,4 @@ -/* global timestampToLocalDateTime */ +/* global timestampToLocalDateTime InstantClick */ function initializeSettings() { // highlights organization secret on click @@ -27,4 +27,15 @@ function initializeSettings() { timeOptions, ); } + + const mobilePageSelector = document.getElementById('mobile-page-selector'); + + if (mobilePageSelector) { + mobilePageSelector.addEventListener('change', (event) => { + const url = event.target.value; + + InstantClick.preload(url); + InstantClick.display(url); + }); + } } diff --git a/app/assets/stylesheets/articles.scss b/app/assets/stylesheets/articles.scss index 23c288b37..2b716375e 100644 --- a/app/assets/stylesheets/articles.scss +++ b/app/assets/stylesheets/articles.scss @@ -85,27 +85,13 @@ } .sidebar-nav { - margin-bottom: 16px; .sidebar-nav-block { - @media screen and (min-width: 950px) { - .sidebar-nav-block-inner { - height: 420px; - overflow-y: scroll; - overflow-x: hidden; - -webkit-overflow-scrolling: touch; - padding: 0 16px; - margin: 0 -16px 8px -16px; - } - } .sidebar-nav-default-tags { display: none; &.showing { display: block; } } - .sidebar-main-nav { - margin-bottom: 24px; - } } } @@ -125,6 +111,10 @@ } } +.sidebar-tags-browser { + max-height: 420px; +} + @keyframes fade-in { 0% { opacity: 0; @@ -357,7 +347,7 @@ } // Generally Feed... -.articles-list { +.articles-list:not(.crayons-layout__content) { margin: auto; max-width: 100%; position: relative; diff --git a/app/assets/stylesheets/base/layout.scss b/app/assets/stylesheets/base/layout.scss index ac1b511d4..b1c4b8fc7 100644 --- a/app/assets/stylesheets/base/layout.scss +++ b/app/assets/stylesheets/base/layout.scss @@ -1,28 +1,28 @@ @import '../config/import'; :root { - --layout-site-width: var(--site-width); - --layout-header-height: var(--header-height); - --layout-sidebar-width: 200px; - --layout-aside-width: 316px; - --layout-gap: var(--su-6); - --layout-padding: var(--su-6); - --layout-article-content-padding-x: var(--su-3); - --layout-article-content-padding-y: var(--su-3); - --layout-narrow-sidebar-width: 66px; - - @media (min-width: $breakpoint-s) { - --layout-article-content-padding-x: var(--su-4); - --layout-article-content-padding-y: var(--su-4); - } + --layout-sidebar-left-display: block; + --layout-sidebar-right-display: block; + --layout-sidebar-left-width: 100%; + --layout-sidebar-right-width: 100%; + --layout-sidebar-left-row-end: initial; + --layout-content-width: 100%; + --layout-drawer-width: 300px; + --layout-gap: var(--su-2); + --layout-padding: 0; + --layout: 100%; @media (min-width: $breakpoint-m) { - --layout-article-content-padding-x: var(--su-6); - --layout-article-content-padding-y: var(--su-6); + --layout-sidebar-left-width: 2fr; + --layout-padding: var(--su-2); + --layout: var(--layout-content-width); } @media (min-width: $breakpoint-l) { - --layout-article-content-padding-x: var(--su-8); + --layout-sidebar-left-width: 240px; + --layout-content-width: 1fr; + --layout-gap: var(--su-4); + --layout-padding: var(--su-4); } } @@ -31,17 +31,159 @@ width: 100%; max-width: var(--site-width); margin: 0 auto; + display: grid; + grid-gap: var(--layout-gap); + grid-template-columns: var(--layout); + padding: var(--layout-padding); - &--max-l { - max-width: $breakpoint-l; + &__sidebar-left { + display: var(--layout-sidebar-left-display); + grid-row-end: var(--layout-sidebar-left-row-end); + width: var(--layout-sidebar-left-width); + } + + &__sidebar-right { + display: var(--layout-sidebar-right-display); + width: var(--layout-sidebar-right-width); + } + + &__content__inner { + margin: 0 auto; + width: 100%; + } + + &--limited { + --site-width: #{$breakpoint-l}; + } + + &--limited-inner { + .crayons-layout__content__inner { + max-width: $breakpoint-l; + } } } -.crayons-layout--default { - @media (min-width: $breakpoint-s) { - display: grid; - grid-gap: var(--layout-gap); - grid-template-columns: var(--layout-sidebar-width) 1fr; - padding: var(--layout-padding); +.crayons-layout--2-cols { + @media (min-width: $breakpoint-m) { + --layout: var(--layout-sidebar-left-width) var(--layout-content-width); + --layout-content-width: 5fr; + } + + @media (min-width: $breakpoint-l) { + --layout-sidebar-left-width: 240px; + --layout-content-width: 1fr; + --layout-gap: var(--su-4); + } + + &.crayons-layout--limited-inner { + .crayons-layout__content__inner { + max-width: $breakpoint-m; + margin: 0 auto; + width: 100%; + } + } +} + +.crayons-layout--3-cols { + @media (min-width: $breakpoint-m) { + --layout: var(--layout-sidebar-left-width) var(--layout-content-width); + --layout-sidebar-left-row-end: span 2; + --layout-sidebar-left-width: 2fr; + --layout-sidebar-right-width: 5fr; + --layout-content-width: 5fr; + } + + @media (min-width: $breakpoint-l) { + --layout-sidebar-left-width: 240px; + --layout-sidebar-right-width: 1fr; + --layout-sidebar-left-row-end: initial; + --layout-content-width: 2fr; + --layout: var(--layout-sidebar-left-width) var(--layout-content-width) + var(--layout-sidebar-right-width); + } + + &--drop-right-left { + --layout-sidebar-left-display: none; + --layout-sidebar-right-display: none; + --layout-sidebar-left-width: var(--layout-drawer-width); + --layout-sidebar-right-width: var(--layout-drawer-width); + + @media (min-width: $breakpoint-m) { + --layout-sidebar-left-width: 2fr; + --layout-sidebar-left-row-end: initial; + --layout-sidebar-left-display: block; + } + + @media (min-width: $breakpoint-l) { + --layout-sidebar-right-display: block; + --layout-sidebar-right-width: 1fr; + --layout-sidebar-left-width: 240px; + } + } +} + +.crayons-layout--article { + @media (min-width: $breakpoint-m) { + --layout-sidebar-left-width: var(--su-9); + --layout: var(--layout-sidebar-left-width) 1fr; + --layout-sidebar-left-row-end: span 2; + } + + @media (min-width: $breakpoint-l) { + --layout-sidebar-right-width: 3fr; + --layout-sidebar-left-row-end: initial; + --layout-content-width: 7fr; + --layout: var(--layout-sidebar-left-width) var(--layout-content-width) + var(--layout-sidebar-right-width); + } +} + +// Temporary solution for sidebar on mobile +.crayons-layout__sidebar-left, +.crayons-layout__sidebar-right { + .sidebar-bg { + top: 0; + left: 0; + right: 0; + bottom: 0; + overflow: hidden; + position: fixed; + background: rgba(0, 0, 0, 0.5); + animation: fade-in var(--transition-props); + display: none; + } + + &.swiped-in { + z-index: 100; + display: block; + position: fixed; + top: var(--header-height); + bottom: 0; + -webkit-overflow-scrolling: touch; + + .sidebar-bg { + display: block; + } + + .side-bar { + position: relative; + background: var(--body-bg); + z-index: 2; + padding: 16px; + align-content: start; + height: 100%; + overflow-y: auto; + } + } +} + +.crayons-layout__sidebar-left { + &.swiped-in { + left: 0; + } +} +.crayons-layout__sidebar-right { + &.swiped-in { + right: 0; } } diff --git a/app/assets/stylesheets/components/cards.scss b/app/assets/stylesheets/components/cards.scss index eae31dcf9..e3c228537 100644 --- a/app/assets/stylesheets/components/cards.scss +++ b/app/assets/stylesheets/components/cards.scss @@ -6,18 +6,33 @@ $card-divider: 1px solid var(--body-bg); border-radius: var(--radius); background: var(--card-bg); color: var(--card-color); + box-shadow: 0 0 0 1px var(--card-border); &--secondary { background: var(--card-secondary-bg); color: var(--card-secondary-color); + box-shadow: 0 0 0 1px var(--card-secondary-border); } &__header { - padding: var(--su-4) var(--su-4); + padding: var(--su-3) var(--su-4); border-bottom: $card-divider; display: flex; justify-content: space-between; align-items: center; + + &__headline { + font-size: var(--fs-l); + font-weight: var(--fw-bold); + color: var(--base-100); + + a { + color: inherit; + &:hover { + color: var(--link-color-hover); + } + } + } } &__subheader { diff --git a/app/assets/stylesheets/components/stories.scss b/app/assets/stylesheets/components/stories.scss index cd525fc28..8e0bfecea 100644 --- a/app/assets/stylesheets/components/stories.scss +++ b/app/assets/stylesheets/components/stories.scss @@ -4,7 +4,7 @@ .crayons-story { background: var(--card-bg); font-size: var(--fs-base); // Todo: remove when ready. - box-shadow: $bold-shadow, 0 0 0 1px var(--story-border); // we will kill it at some point, don't worry. just not yet. + box-shadow: 0 0 0 1px var(--card-border); @media (min-width: $breakpoint-m) { border-radius: var(--radius); diff --git a/app/assets/stylesheets/config/_colors.scss b/app/assets/stylesheets/config/_colors.scss index 0501bf8b8..6b91dd24e 100644 --- a/app/assets/stylesheets/config/_colors.scss +++ b/app/assets/stylesheets/config/_colors.scss @@ -68,10 +68,8 @@ //////////////////////////////////////////////////////////////////////////////////// // Main colors - --body-bg: #f9fafa; // todo: replace with `var(--base-10);` when ready. - --body-color: var( - --base-100 - ); // todo: replace with `var(--base-100);` when ready. + --body-bg: var(--base-10); + --body-color: var(--base-100); --body-color-inverted: var(--base-inverted); // Main content containers @@ -82,6 +80,8 @@ --card-secondary-bg: var(--base-0); --card-secondary-color: var(--base-90); --card-headline-color: var(--base-100); + --card-border: var(--base-a10); + --card-secondary-border: var(--base-a5); // Header --header-bg: var(--base-inverted); @@ -209,7 +209,6 @@ // Story --story-comments-bg: var(--base-0); - --story-border: transparent; // Select icon --select-icon: url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjQiIGhlaWdodD0iMjQiIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZD0iTTEyIDE2TDYgMTBIMThMMTIgMTZaIiBmaWxsPSIjMDgwOTBBIi8+Cjwvc3ZnPg==); diff --git a/app/assets/stylesheets/onboarding.scss b/app/assets/stylesheets/onboarding.scss index 49ee99d61..061d190db 100644 --- a/app/assets/stylesheets/onboarding.scss +++ b/app/assets/stylesheets/onboarding.scss @@ -4,6 +4,7 @@ .onboarding-task-card { background: var(--accent-brand); + position: relative; border-radius: var(--radius); padding: var(--su-7) var(--su-8) var(--su-8) var(--su-8); display: none; diff --git a/app/assets/stylesheets/themes/hacker.scss b/app/assets/stylesheets/themes/hacker.scss index ad878502f..4a3de7166 100644 --- a/app/assets/stylesheets/themes/hacker.scss +++ b/app/assets/stylesheets/themes/hacker.scss @@ -72,6 +72,8 @@ --card-secondary-bg: var(--base-inverted); --card-secondary-color: var(--base-90); --card-headline-color: var(--accent-brand-lighter); + --card-border: rgba(255, 255, 255, 0.2); + --card-secondary-border: rgba(255, 255, 255, 0.2); // Header --header-bg: var(--base-10); @@ -199,7 +201,6 @@ // Story --story-comments-bg: #0d0d0d; - --story-border: rgba(255, 255, 255, 0.2); // Select icon --select-icon: url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjQiIGhlaWdodD0iMjQiIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZD0iTTEyIDE2TDYgMTBIMThMMTIgMTZaIiBmaWxsPSIjMkVGRjdCIi8+Cjwvc3ZnPg==); diff --git a/app/assets/stylesheets/themes/minimal.scss b/app/assets/stylesheets/themes/minimal.scss index a0fe7109f..52c97839e 100644 --- a/app/assets/stylesheets/themes/minimal.scss +++ b/app/assets/stylesheets/themes/minimal.scss @@ -70,6 +70,8 @@ --card-secondary-bg: var(--base-0); --card-secondary-color: var(--base-90); --card-headline-color: var(--base-100); + --card-border: var(--base-a5); + --card-secondary-border: var(--base-a5); // Header --header-bg: var(--base-0); @@ -197,7 +199,6 @@ // Story --story-comments-bg: #fafafa; //hotfix - --story-border: transparent; // Select icon --select-icon: url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjQiIGhlaWdodD0iMjQiIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZD0iTTEyIDE2TDYgMTBIMThMMTIgMTZaIiBmaWxsPSIjN2E3YTdhIi8+Cjwvc3ZnPg==); diff --git a/app/assets/stylesheets/themes/night.scss b/app/assets/stylesheets/themes/night.scss index 45380c78a..267f71ba1 100644 --- a/app/assets/stylesheets/themes/night.scss +++ b/app/assets/stylesheets/themes/night.scss @@ -72,6 +72,8 @@ --card-secondary-bg: var(--base-a5); --card-secondary-color: var(--base-90); --card-headline-color: var(--base-100); + --card-border: rgba(255, 255, 255, 0.15); + --card-secondary-border: rgba(255, 255, 255, 0.1); // Header --header-bg: var(--base-10); @@ -199,7 +201,6 @@ // Story --story-comments-bg: #151e2a; //hotfix - --story-border: rgba(255, 255, 255, 0.15); // Select icon --select-icon: url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjQiIGhlaWdodD0iMjQiIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZD0iTTEyIDE2TDYgMTBIMThMMTIgMTZaIiBmaWxsPSIjYzJjNmNhIi8+Cjwvc3ZnPg==); diff --git a/app/assets/stylesheets/themes/pink.scss b/app/assets/stylesheets/themes/pink.scss index 326b1cea5..1fed9340d 100644 --- a/app/assets/stylesheets/themes/pink.scss +++ b/app/assets/stylesheets/themes/pink.scss @@ -67,9 +67,11 @@ --card-color: var(--base-100); --card-color-secondary: var(--base-70); --card-color-tertiary: var(--base-50); - --card-secondary-bg: var(--base-0); + --card-secondary-bg: rgba(255, 209, 223, 0.3); --card-secondary-color: var(--base-90); --card-headline-color: var(--base-100); + --card-border: var(--accent-brand); + --card-secondary-border: #{rgba(#ff6c9b, 0.2)}; // Header --header-bg: var(--base-40); @@ -197,7 +199,6 @@ // Story --story-comments-bg: rgba(255, 255, 255, 0.05); - --story-border: var(--accent-brand); // Select icon --select-icon: url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjQiIGhlaWdodD0iMjQiIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZD0iTTEyIDE2TDYgMTBIMThMMTIgMTZaIiBmaWxsPSIjNTcxOTJkIi8+Cjwvc3ZnPg==); diff --git a/app/assets/stylesheets/top-bar.scss b/app/assets/stylesheets/top-bar.scss index 8c018e1d1..e2149f04a 100644 --- a/app/assets/stylesheets/top-bar.scss +++ b/app/assets/stylesheets/top-bar.scss @@ -25,11 +25,17 @@ } &__container { - max-width: $max-width; + max-width: var(--site-width); + padding-left: var(--su-2); + padding-right: var(--layout-padding); margin: auto; display: flex; align-items: center; position: relative; + + @media (min-width: $breakpoint-m) { + padding-left: var(--layout-padding); + } } .crayons-indicator { @@ -43,10 +49,6 @@ // Logo .top-bar--logo { display: flex; - margin-left: var(--su-2); - @media (min-width: $breakpoint-m) { - margin-left: var(--su-4); - } .logo { width: 50px; diff --git a/app/assets/stylesheets/views/article-form.scss b/app/assets/stylesheets/views/article-form.scss index 3402dd6aa..573a63a3c 100644 --- a/app/assets/stylesheets/views/article-form.scss +++ b/app/assets/stylesheets/views/article-form.scss @@ -1,7 +1,7 @@ @import '../config/import'; %layout { - max-width: var(--layout-site-width); + max-width: 1280px; width: 100%; margin: 0 auto; } @@ -23,108 +23,102 @@ .crayons-article-form { --article-form-actions-height: 56px; - --layout-padding: var(--su-2); - + max-width: var(--site-width); display: grid; + padding: 0 var(--layout-padding); height: 100vh; - grid-template-rows: min-content 1fr min-content; - background: var(--body-bg); + gap: 0 var(--layout-gap); + margin: 0 auto; font-size: var(--fs-base); + grid-template-columns: 100%; + grid-template-rows: min-content 1fr min-content; + + &__logo, + &__aside { + display: none; + + @media (min-width: $breakpoint-m) { + display: block; + } + } @media (min-width: $breakpoint-s) { --article-form-actions-height: 72px; } + @media (min-width: $breakpoint-m) { + grid-template-columns: 64px 7fr 3fr; + } + @media (min-width: $breakpoint-l) { --article-form-actions-height: 88px; } &__header { - @extend %layout; - display: flex; align-items: center; - padding: 0 var(--layout-padding); - height: var(--layout-header-height); + height: var(--header-height); + padding: 0 var(--su-2); + + @media (min-width: $breakpoint-m) { + grid-column-end: span 2; + padding: 0; + } @media (min-width: $breakpoint-l) { - padding-right: calc( - var(--layout-aside-width) + var(--layout-padding) + var(--layout-gap) - ); + grid-column-start: 1; + grid-column-end: 3; } } - &__main { - @extend %layout; + &__content { + display: flex; + flex-direction: column; + height: 100%; + padding: var(--article-padding-y) var(--article-padding-x); + overflow: auto; + height: calc( + 100vh - var(--header-height) - var(--article-form-actions-height) + ); + box-shadow: 0 0 0 1px var(--card-border); @media (min-width: $breakpoint-m) { - padding: 0 var(--layout-padding); + grid-column-end: span 2; } @media (min-width: $breakpoint-l) { - display: grid; - grid-gap: var(--layout-gap); - grid-template-columns: - calc(100% - var(--layout-aside-width) - var(--layout-gap)) - var(--layout-aside-width); + grid-column-start: 2; + grid-column-end: 2; } + } - @media (min-width: $breakpoint-xl) { - padding-left: calc( - var(--layout-narrow-sidebar-width) + var(--layout-padding) - ); - } + &__aside { + display: none; - &__content { - display: flex; - flex-direction: column; - height: 100%; - padding: var(--layout-article-content-padding-y) - var(--layout-article-content-padding-x); - - @media (min-width: $breakpoint-s) { - overflow: auto; - height: calc( - 100vh - var(--layout-header-height) - - var(--article-form-actions-height) - ); - } - - @media (min-width: $breakpoint-m) { - border: 1px solid var(--base-10); - } - } - - &__aside { - display: none; - - @media (min-width: $breakpoint-l) { - display: block; - } + @media (min-width: $breakpoint-m) { + display: block; } } &__footer { - @extend %layout; - background: var(--body-bg); - position: sticky; - bottom: 0; - padding: 0 var(--layout-padding); height: var(--article-form-actions-height); display: flex; align-items: center; + padding: 0 var(--su-2); - @media (min-width: $breakpoint-xl) { - padding-left: calc( - var(--layout-narrow-sidebar-width) + var(--layout-padding) - ); + @media (min-width: $breakpoint-m) { + padding: 0; + } + + @media (min-width: $breakpoint-l) { + grid-column-start: 2; + grid-column-end: span 2; } } } .crayons-article-form { &__logo { - display: flex; margin-right: var(--su-1); @media (min-width: $breakpoint-s) { margin-right: var(--layout-gap); @@ -137,6 +131,7 @@ background: var(--logo-bg); fill: var(--logo-color); border-radius: var(--radius); + display: block; } } @@ -167,16 +162,12 @@ &__toolbar { position: sticky; - top: 0; + top: calc(var(--article-padding-y) * -1); background: var(--base-0); - padding: var(--su-2) var(--layout-article-content-padding-x); - margin: calc(var(--layout-article-content-padding-y) * -1) - calc(var(--layout-article-content-padding-x) * -1) var(--su-6) - calc(var(--layout-article-content-padding-x) * -1); - - @media (min-width: $breakpoint-s) { - top: calc(var(--layout-article-content-padding-y) * -1); - } + padding: var(--su-2) var(--article-padding-x); + margin: calc(var(--article-padding-y) * -1) + calc(var(--article-padding-x) * -1) var(--su-6) + calc(var(--article-padding-x) * -1); > :first-child { margin-left: calc(var(--su-2) * -1); @@ -184,7 +175,7 @@ } &__cover { - margin-bottom: var(--su-6); + margin-bottom: var(--su-4); display: flex; align-items: flex-start; flex-direction: column; @@ -192,6 +183,7 @@ @media (min-width: $breakpoint-s) { flex-direction: row; align-items: center; + margin-bottom: var(--su-5); } &__image { @@ -215,7 +207,7 @@ &__tagsfield { position: relative; - margin-bottom: calc(var(--su-7) + var(--layout-article-content-padding-y)); + margin-bottom: calc(var(--article-padding-y) * 2); } &__help { diff --git a/app/assets/stylesheets/views/article.scss b/app/assets/stylesheets/views/article.scss index 0cad47450..e6e492f19 100644 --- a/app/assets/stylesheets/views/article.scss +++ b/app/assets/stylesheets/views/article.scss @@ -2,19 +2,31 @@ :root { --article-rythm: var(--su-2); + --article-padding-x: var(--su-3); + --article-padding-y: var(--su-3); + + @media (min-width: $breakpoint-s) { + --article-padding-x: var(--su-4); + --article-padding-y: var(--su-4); + } @media (min-width: $breakpoint-m) { --article-rythm: var(--su-4); + --article-padding-x: var(--su-6); + --article-padding-y: var(--su-6); + } + + @media (min-width: $breakpoint-l) { + --article-padding-x: var(--su-8); } } .crayons-article { &__cover { - margin: calc(var(--layout-article-content-padding-y) * -1) - calc(var(--layout-article-content-padding-x) * -1) - var(--layout-article-content-padding-x) - calc(var(--layout-article-content-padding-x) * -1); - width: calc(100% + (var(--layout-article-content-padding-x) * 2)); + margin: calc(var(--article-padding-y) * -1) + calc(var(--article-padding-x) * -1) var(--article-padding-x) + calc(var(--article-padding-x) * -1); + width: calc(100% + (var(--article-padding-x) * 2)); &__image { border-radius: var(--radius) var(--radius) 0 0; diff --git a/app/assets/stylesheets/widgets.scss b/app/assets/stylesheets/widgets.scss index e45a1e608..805744ae4 100644 --- a/app/assets/stylesheets/widgets.scss +++ b/app/assets/stylesheets/widgets.scss @@ -8,6 +8,7 @@ @include sidebar-link; margin: 0; margin-bottom: var(--su-2); + padding: var(--su-2); display: flex; align-items: center; @@ -441,7 +442,6 @@ // Left Side bar navigation links // Pulling this out of context because Nick says so: https://github.com/thepracticaldev/dev.to/pull/5918/commits/f1642e62accbdaff72dc7762e1e1ffd4e40027b0 .sidebar-nav-element { - color: $black; display: block; position: relative; @media screen and (min-width: $breakpoint-m) { @@ -478,15 +478,9 @@ } a.sidebar-nav-link-follow { position: absolute; - color: $black; right: 5px; top: 50%; transform: translateY(-50%); - text-align: center; - border-radius: 3px; - font-weight: 900; - font-size: 0.8em; - padding: 2px 8px; } } @@ -511,3 +505,13 @@ color: var(--link-color-secondary); } } + +.crayons-sponsorship-widget { + img { + width: 100%; + height: auto; + border-radius: var(--radius); + display: inline-block; + vertical-align: middle; + } +} diff --git a/app/javascript/article-form/__tests__/__snapshots__/articleForm.test.jsx.snap b/app/javascript/article-form/__tests__/__snapshots__/articleForm.test.jsx.snap index 58c747a96..e69bc3a02 100644 --- a/app/javascript/article-form/__tests__/__snapshots__/articleForm.test.jsx.snap +++ b/app/javascript/article-form/__tests__/__snapshots__/articleForm.test.jsx.snap @@ -7,7 +7,7 @@ exports[` renders properly 1`] = ` onInput={[Function]} >
renders properly 1`] = ` class="crayons-field__label flex items-center flex-1" > @@ -91,164 +91,160 @@ exports[` renders properly 1`] = `
-
-
+
+ - <% end %> -
-
-
- +
+
+
+ +
+
+ <% end %> +
+
+ +
+
-
+
+
diff --git a/app/views/articles/_widget_list_item.html.erb b/app/views/articles/_widget_list_item.html.erb index 2b041ac51..249da225d 100644 --- a/app/views/articles/_widget_list_item.html.erb +++ b/app/views/articles/_widget_list_item.html.erb @@ -1,11 +1,11 @@ - + <%= plucked_article[1] %> <% if show_comment_count %> -
+ <% end %> diff --git a/app/views/articles/index.html.erb b/app/views/articles/index.html.erb index 78d15e3fb..b0525788f 100644 --- a/app/views/articles/index.html.erb +++ b/app/views/articles/index.html.erb @@ -27,7 +27,7 @@ <%= javascript_packs_with_chunks_tag "homePage", defer: true %> <% cache(cache_key_heroku_slug("main-stories-index-#{params}-#{user_signed_in?}"), expires_in: 90.seconds) do %> -
" data-which="<%= @list_of %>" data-tag="" data-feed="<%= params[:timeframe] || "base-feed" %>" @@ -35,11 +35,12 @@ <%= render "articles/sidebar" %> -
+ <%# BEGIN Feed menu bar %> +
<%= render(partial: "onboardings/task_card") if user_signed_in? %>
- <% end %> -
-
-