Kris 56c0d8cf92
UX: mobile experimental sidebar improvement (#17302)
First pass at the mobile experimental sidebar improvement.

Co-authored-by: Alan Guo Xiang Tan <gxtan1990@gmail.com>
2022-07-05 11:45:02 +08:00

191 lines
3.2 KiB
SCSS

// Mobile
// global styles that apply to the Discourse application specifically
// BEWARE: changing these styles implies they take effect anywhere they are seen
// throughout the Discourse application
// Base Elements
body {
background-color: var(--secondary);
}
.ios-device {
textarea {
background-color: var(--secondary);
font-size: var(--font-size-ios-input);
-webkit-tap-highlight-color: transparent;
}
input#reply-title {
-webkit-tap-highlight-color: transparent;
}
}
blockquote {
/* 13px left is intentional here to properly align with post quotes */
padding: 10px 8px 10px 13px;
p {
margin: 0 0 10px 0;
&:last-of-type {
margin-bottom: 0;
}
}
}
// Common classes
.boxed {
.contents {
padding: 10px 0 0 0;
}
}
.control-group {
margin-bottom: 9px;
}
.mobile-nav {
margin: 0;
padding: 0;
list-style: none;
position: relative;
a {
color: var(--primary);
.d-icon {
margin-right: 0.25em;
color: var(--primary-medium);
}
}
> li > a.expander {
display: flex;
align-items: center;
@include form-item-sizing;
border-color: var(--primary-medium);
max-width: 100%;
.selection {
@include ellipsis;
max-width: 120px;
}
> .d-icon {
&:last-of-type {
margin-left: auto;
margin-right: 0;
}
}
}
.drop {
display: none;
&.expanded {
left: 0;
display: block;
position: absolute;
z-index: z("dropdown");
background-color: var(--secondary);
width: 100%;
list-style: none;
margin: 0;
padding: 5px;
border: 1px solid var(--primary-low);
box-sizing: border-box;
li {
margin: 5px 0;
padding: 0;
a {
height: 100%;
display: block;
padding: 5px 8px;
@include ellipsis;
}
}
}
}
}
.form-vertical {
.control-group {
margin-bottom: 12px;
}
}
// Special elements
#main-outlet-wrapper {
margin-left: unset;
margin-right: unset;
}
#main-outlet {
padding-top: 1.25em;
}
#main {
position: relative;
}
// Styles used before the user is logged into discourse. For example, activating
// their account or changing their email.
#simple-container {
width: 90%;
}
#main-outlet-wrapper {
width: 100%;
#main-outlet {
&.main-outlet-animate {
width: 95vw; // prevents content width shift during animation
}
}
}
.sidebar-wrapper {
width: 0;
transition: width 0.25s ease-in-out;
}
body.has-sidebar-page {
position: fixed;
height: calc(100vh - var(--header-offset));
#main {
overflow: hidden;
}
.sidebar-wrapper {
width: var(--d-sidebar-width);
}
#main-outlet {
position: relative;
width: 95vw; // prevents content width shift during animation
&:after {
content: "";
background: rgba(0, 0, 0, 0.5);
position: absolute;
top: 0;
left: -2em; // compensate for gap
right: 0;
bottom: 0;
z-index: z("dropdown");
}
}
#main-outlet-wrapper {
grid-template-columns: min-content minmax(0, 100vw);
gap: 0 2em;
padding-left: 0;
.sidebar-container {
padding-bottom: 6.6em;
transition: width 0.25s;
}
}
}