discourse/app/assets/stylesheets/mobile/user.scss
Krzysztof Kotlarek e313190fdb
FEATURE: better UI to manage 2fa (#19338)
In this PR, we introduced an option, that when all authenticators are disabled, but backup codes still exists, user can authenticate with those backup codes. This was reverted as this is not expected behavior.

https://github.com/discourse/discourse/pull/18982

Instead, when the last authenticator is deleted, backup codes should be deleted as well. Because this disables 2fa, user is asked to confirm that action by typing text.

In addition, UI for 2fa preferences was refreshed.
2022-12-08 09:41:22 +11:00

446 lines
7.3 KiB
SCSS

// Mobile styles for "/user" section
.user-content-wrapper {
display: grid;
grid-template-columns: 1fr 1fr;
grid-template-rows: auto auto auto;
grid-gap: 16px;
.user-primary-navigation {
grid-column-start: 1;
grid-row-start: 1;
grid-column-end: 2;
min-width: 120px;
}
.user-secondary-navigation {
grid-column-start: 2;
grid-row-start: 1;
min-width: 120px;
}
.user-additional-controls + .user-content,
.user-secondary-navigation + .user-content {
grid-column-start: 1;
}
.user-additional-controls {
grid-column-start: 1;
grid-column-end: 3;
grid-row-start: 2;
}
.user-content,
.spinner {
grid-row-start: 3;
grid-column-start: 1;
}
// specific to messages
.user-messages {
grid-row-start: 2;
grid-column-start: 1;
grid-column-end: 3;
display: grid;
grid-template-columns: 1fr 1fr;
gap: 16px;
+ .user-additional-controls {
grid-row-start: 2;
grid-column-start: 1;
}
}
.inboxes-controls {
display: flex;
}
.new-private-message {
grid-row-start: 1;
grid-column-start: 2;
}
.group-notifications-button {
margin-left: 8px;
.select-kit-header {
.selected-name .name {
display: none;
}
}
}
}
.user-messages-page {
.paginated-topics-list {
margin-top: 0;
}
.show-mores {
margin-top: 0.5em;
}
}
.user-main {
padding-bottom: 60px; // slightly taller than .footer-nav
.user-content {
box-sizing: border-box;
background-color: var(--secondary);
table {
width: 100%;
margin-top: 12px;
}
}
.about {
margin-bottom: 0;
color: var(--secondary);
.secondary {
dl {
padding: 8px 0;
}
}
.details {
margin-bottom: 12px;
h1 {
line-height: var(--line-height-small);
}
h2 {
line-height: var(--line-height-medium);
}
.user-profile-avatar {
.avatar-flair {
right: 2px;
}
display: block;
float: none;
margin: 8px auto;
img.avatar {
float: none;
}
}
.user-profile-names {
text-align: center;
}
.featured-topic {
text-align: center;
font-size: var(--font-0);
}
.location-and-website {
display: flex;
flex-wrap: wrap;
justify-content: center;
font-size: var(--font-0);
.d-icon {
width: 0.8em;
height: 0.8em;
margin-right: 0.25em;
}
a {
text-decoration: underline;
}
}
.user-profile-location {
margin-right: 1em;
}
.user-profile-location,
.user-profile-website {
justify-content: center;
display: flex;
align-items: center;
}
}
.primary {
display: flex;
flex-wrap: wrap;
color: var(--primary);
.avatar {
margin: 0 0 12px;
}
.primary-textual {
flex: 1 1 100%;
word-break: break-word;
margin: 0;
max-width: 100%;
}
.bio {
color: var(--primary);
margin: 0 auto 8px;
max-width: 700px;
text-align: center;
ol {
margin-left: 25px;
}
ul,
ol {
display: inline-block;
padding-left: 0;
text-align: left;
}
}
.public-user-fields .public-user-field {
text-align: center;
}
}
&.has-background {
.user-profile-image {
height: 200px;
}
.user-profile-avatar {
margin-top: -60px;
}
}
.controls {
order: 3;
flex: 1 1 25%;
margin-left: auto;
.btn {
margin-bottom: 16px;
}
ul {
margin: 0;
display: flex;
flex: 1 1 auto;
flex-wrap: wrap;
li,
> span {
display: flex;
flex: 1 1 45%;
margin-left: 1em;
button,
a {
width: 100%;
}
.select-kit.dropdown-select-box.user-notifications-dropdown {
width: 100%;
li {
flex: 1 1 100%;
margin-left: 0;
}
}
}
}
> ul {
margin-left: -1em; // negates left button margin, for alignment
}
.user-profile-controls-outlet {
margin: 0 0 0 1em;
li {
margin: 0;
}
}
a {
flex: 1 1 auto;
min-width: 120px;
}
}
}
.user-field {
label {
width: auto;
text-align: left;
font-weight: bold;
}
}
}
.user-main .collapsed-info.about.has-background {
background-image: none !important; // todo: make changes to behavior to remove this
.details {
margin-top: 0;
}
}
.user-main .collapsed-info.about .details {
display: flex;
margin-bottom: 16px;
.user-profile-avatar {
margin: 0;
flex: 0 0 auto;
align-self: flex-start;
}
.primary .primary-textual {
flex: 1 0 80%;
margin: 0;
}
.user-profile-names {
text-align: left;
}
}
.paginated-topics-list {
margin-top: 20px;
}
.stats-section {
li {
margin: 0 15px 10px 0;
padding: 0;
&.linked-stat {
a {
padding: 0;
}
}
}
}
.badge-card.medium {
width: 100%;
}
.user-preferences {
padding-bottom: 2em;
.instructions {
margin-top: 4px;
}
.controls-dropdown {
margin-bottom: 16px;
}
.delete-account {
overflow: hidden;
}
.checkbox-label {
display: flex;
overflow: auto;
width: 100%;
padding: 5px 0;
input {
margin-right: 5px;
flex: 0 0 auto;
}
}
.apps .controls button {
float: right;
}
}
.user-right {
&,
> .user-stream {
> .alert:first-child {
margin-top: 20px;
}
}
}
.user-invites-page {
.user-invite-search input {
width: 100%;
}
.user-additional-controls {
width: 100%;
display: flex;
flex-direction: row;
flex-wrap: wrap;
.user-invite-search {
width: 100%;
}
.user-invite-buttons {
width: 100%;
display: flex;
flex-direction: row;
flex-wrap: wrap;
.btn {
margin-bottom: 0.5em;
}
.btn:not(:last-of-type) {
margin-right: 0.5em;
}
}
}
table.user-invite-list {
thead {
display: none;
}
tr {
display: grid;
grid-template-columns: repeat(4, 1fr);
padding: 0.25em;
}
.label {
display: block;
color: var(--primary-medium);
font-size: var(--font-down-1);
margin: 0.5em 0 0.15em 0;
}
td.invite-type {
grid-column-start: 1;
grid-column-end: -2;
order: 1;
vertical-align: middle;
}
td.invite-actions {
order: 2;
align-self: center;
text-align: right;
button {
margin: 0.25em;
}
}
td.invite-updated-at {
grid-column-start: 1;
grid-column-end: 3;
order: 3;
}
td.invite-expires-at {
grid-column-start: 3;
grid-column-end: -1;
order: 4;
}
td.invite-actions {
display: flex;
}
}
.user-invite-none {
margin-top: 1em;
}
}
.second-factor {
.second-factor-item {
width: auto;
display: flex;
justify-content: space-between;
}
.details {
width: 75%;
}
}