pleroma-fe/src/components/user_card/user_card.scss

455 lines
8.8 KiB
SCSS
Raw Normal View History

2022-04-20 20:03:18 +03:00
.user-card {
position: relative;
z-index: 1;
2025-07-29 17:38:08 +03:00
.user-card-inner {
padding-bottom: 0;
}
2025-07-30 01:13:24 +03:00
.user-card-bio {
&.-justify-left {
text-align: start;
}
}
2022-04-20 20:03:18 +03:00
&:hover {
--_still-image-img-visibility: visible;
--_still-image-canvas-visibility: hidden;
--_still-image-label-visibility: hidden;
}
.panel-heading {
text-align: center;
box-shadow: none;
background: transparent;
2025-07-29 17:38:08 +03:00
backdrop-filter: none;
2022-04-20 20:03:18 +03:00
flex-direction: column;
align-items: stretch;
// create new stacking context
position: relative;
2025-07-29 17:38:08 +03:00
}
.personal-marks {
margin: 0.6em;
padding: 0.6em;
2025-07-29 19:00:45 +03:00
&:not(:last-child) {
border-bottom: 1px solid var(--border);
}
2025-07-29 17:38:08 +03:00
.highlighter {
h4 {
margin-top: 0.6em;
}
.userHighlightSel {
vertical-align: bottom;
margin-left: -0.1em;
2025-07-29 17:52:52 +03:00
&.-none select {
2025-07-29 17:38:08 +03:00
color: var(--textFaint);
2025-07-29 17:52:52 +03:00
option {
color: var(--text);
background: var(--background);
}
2025-07-29 17:38:08 +03:00
}
}
.highlighter-color {
vertical-align: bottom;
margin-left: 0.6em;
}
}
2022-04-20 20:03:18 +03:00
}
.background-image {
2025-07-29 17:38:08 +03:00
width: calc(100% + 2.4em);
margin-left: -1.2em;
margin-right: -1.2em;
2025-07-30 10:29:28 +03:00
margin-top: -3.4em;
2025-07-29 17:38:08 +03:00
margin-bottom: -4.5em;
aspect-ratio: 3;
padding: 0;
2025-03-31 12:51:17 +03:00
inset: 0;
2023-01-09 13:02:16 -05:00
mask:
2025-07-29 17:38:08 +03:00
linear-gradient(to top, white 0%, transparent 20%) bottom no-repeat,
linear-gradient(to top, white 0%, white 100%);
2022-04-20 20:03:18 +03:00
// Autoprefixer seem to ignore this one, and also syntax is different
2025-03-31 13:05:28 +03:00
/* stylelint-disable mask-composite */
/* stylelint-disable declaration-property-value-no-unknown */
2025-07-27 17:28:21 +00:00
/* stylelint-disable scss/declaration-property-value-no-unknown */
2025-03-31 13:05:28 +03:00
/* TODO check if this is still needed */
2023-01-09 13:02:16 -05:00
mask-composite: xor;
2025-07-27 17:28:21 +00:00
/* stylelint-enable scss/declaration-property-value-no-unknown */
2025-03-31 13:05:28 +03:00
/* stylelint-enable declaration-property-value-no-unknown */
/* stylelint-enable mask-composite */
2022-04-20 20:03:18 +03:00
mask-composite: exclude;
background-size: cover;
2025-07-29 17:38:08 +03:00
mask-size: 100%;
border-top-left-radius: calc(var(--__roundnessTop, --panelRadius) - 1px);
border-top-right-radius: calc(var(--__roundnessTop, --panelRadius) - 1px);
border-bottom-left-radius: calc(var(--__roundnessBottom, --panelRadius) - 1px);
border-bottom-right-radius: calc(var(--__roundnessBottom, --panelRadius) - 1px);
2022-04-20 20:03:18 +03:00
background-color: var(--profileBg);
z-index: -2;
&.hide-bio {
mask-size: 100% 40px;
}
}
&-bio {
text-align: center;
2025-07-29 17:38:08 +03:00
color: var(--lightText);
2022-04-20 20:03:18 +03:00
display: block;
line-height: 1.3;
2025-07-29 17:38:08 +03:00
padding: 0.6em;
margin: 0 0.6em;
2022-04-20 20:03:18 +03:00
img {
object-fit: contain;
vertical-align: middle;
max-width: 100%;
max-height: 400px;
}
}
2022-06-16 17:06:16 +03:00
&.-rounded-t {
2024-02-28 22:56:15 +02:00
border-top-left-radius: var(--roundness);
border-top-right-radius: var(--roundness);
2022-06-16 17:06:16 +03:00
2024-02-28 22:56:15 +02:00
--__roundnessTop: var(--roundness);
2022-06-16 17:06:16 +03:00
--__roundnessBottom: 0;
2022-04-20 20:03:18 +03:00
}
2022-06-16 17:06:16 +03:00
&.-rounded {
2024-02-28 22:56:15 +02:00
border-radius: var(--roundness);
2022-06-16 17:06:16 +03:00
2024-02-28 22:56:15 +02:00
--__roundnessTop: var(--roundness);
--__roundnessBottom: var(--roundness);
2022-06-16 17:06:16 +03:00
}
&.-popover {
2024-02-28 22:56:15 +02:00
border-radius: var(--roundness);
2022-06-16 17:06:16 +03:00
2024-02-28 22:56:15 +02:00
--__roundnessTop: var(--roundness);
--__roundnessBottom: var(--roundness);
2022-04-20 20:03:18 +03:00
}
2022-06-16 17:06:16 +03:00
&.-bordered {
2022-04-20 20:03:18 +03:00
border-width: 1px;
border-style: solid;
2024-02-28 22:56:15 +02:00
border-color: var(--border);
2022-04-20 20:03:18 +03:00
}
}
.user-info {
2025-07-29 17:38:08 +03:00
position: relative;
margin: 0.6em;
margin-bottom: 0;
2025-07-30 10:00:03 +03:00
text-align: right;
2022-04-20 20:03:18 +03:00
2025-07-29 17:38:08 +03:00
.user-identity {
2022-04-20 20:03:18 +03:00
min-width: 0;
display: flex;
2025-07-29 17:38:08 +03:00
align-items: flex-end;
margin-bottom: 1em;
container: user-card / inline-size;
2022-04-20 20:03:18 +03:00
> * {
min-width: 0;
}
> a {
vertical-align: middle;
display: flex;
}
2022-04-20 20:03:18 +03:00
.Avatar {
--_avatarShadowBox: var(--avatarShadow);
--_avatarShadowFilter: var(--avatarShadowFilter);
--_avatarShadowInset: var(--avatarShadowInset);
2025-07-29 19:00:45 +03:00
width: 7em;
width: calc(min(7em, 20cqw));
2025-07-29 19:00:45 +03:00
height: 7em;
height: calc(min(7em, 20cqw));
2022-04-20 20:03:18 +03:00
object-fit: cover;
}
}
2025-07-29 17:38:08 +03:00
.other-actions {
2025-07-30 10:00:03 +03:00
position: relative;
display: inline-grid;
2025-07-29 17:38:08 +03:00
grid-auto-flow: column;
grid-gap: 0.6em;
font-size: 110%;
2025-07-30 10:00:03 +03:00
z-index: 2;
2025-07-29 17:38:08 +03:00
a, button, div {
2025-07-29 17:38:08 +03:00
text-align: center;
width: 2em;
height: 2em;
line-height: 2em;
padding: 0.6em;
margin: -0.6em;
&:hover .icon {
color: var(--textFaint);
}
2025-07-29 17:38:08 +03:00
&:not(:hover) .icon {
color: var(--lightText);
}
}
}
&-avatar {
2022-04-20 20:03:18 +03:00
position: relative;
cursor: pointer;
2025-07-29 17:38:08 +03:00
margin-right: 0.6em;
2022-04-20 20:03:18 +03:00
&.-overlay {
2022-04-20 20:03:18 +03:00
position: absolute;
2025-07-29 17:38:08 +03:00
inset: -0.6em;
left: -0.6em;
right: -1.2em;
2023-01-09 13:02:16 -05:00
background-color: rgb(0 0 0 / 30%);
2022-04-20 20:03:18 +03:00
display: flex;
justify-content: center;
align-items: center;
2024-02-13 02:09:43 +02:00
border-radius: var(--roundness);
2022-04-20 20:03:18 +03:00
opacity: 0;
2023-01-09 13:02:16 -05:00
transition: opacity 0.2s ease;
2022-04-20 20:03:18 +03:00
svg {
2023-01-09 13:02:16 -05:00
color: #fff;
2022-04-20 20:03:18 +03:00
}
}
&:hover &.-overlay {
2022-04-20 20:03:18 +03:00
opacity: 1;
}
}
2023-01-09 13:02:16 -05:00
.user-summary {
display: block;
margin-left: 0.6em;
text-align: left;
text-overflow: ellipsis;
white-space: nowrap;
flex: 1 1 0;
// This is so that text doesn't get overlapped by avatar's shadow if it has
// big one
z-index: 1;
line-height: 2em;
--emoji-size: 1.7em;
.RichContent {
/* stylelint-disable-next-line declaration-no-important */
--link: var(--text) !important;
}
.top-line {
2025-07-29 17:38:08 +03:00
display: flex;
// these two normalize position and height when custom emoji are used
2025-07-29 17:38:08 +03:00
line-height: 2;
margin-bottom: -0.2em;
2025-07-29 17:38:08 +03:00
font-weight: 600;
font-size: 110%;
font-size: calc(max(110%, 4cqw));
2025-07-29 17:38:08 +03:00
}
2023-01-09 13:02:16 -05:00
.bottom-line {
2025-07-30 10:22:37 +03:00
white-space: normal;
2025-07-29 17:38:08 +03:00
font-weight: 500;
2025-07-30 10:22:37 +03:00
font-size: 0.9em;
2025-07-29 17:38:08 +03:00
line-height: 1.5;
2023-01-09 13:02:16 -05:00
}
2025-07-30 10:22:37 +03:00
.lock-icon {
margin-left: 0.5em;
}
.user-screen-name {
color: var(--text);
min-width: 5em;
text-overflow: ellipsis;
overflow: hidden;
display: inline-block;
}
.user-role {
display: inline-block;
vertical-align: baseline;
}
2023-01-09 13:02:16 -05:00
}
.user-name {
text-overflow: ellipsis;
overflow: hidden;
flex: 1 1 auto;
margin-right: 1em;
font-size: 1.1em;
}
2025-07-29 17:38:08 +03:00
.highlighter {
margin: 5em;
2022-04-20 20:03:18 +03:00
align-items: baseline;
line-height: 22px;
flex-wrap: wrap;
.following {
flex: 1 0 auto;
margin: 0;
2023-01-09 13:02:16 -05:00
margin-bottom: 0.25em;
2022-04-20 20:03:18 +03:00
text-align: left;
}
.highlighter {
flex: 0 1 auto;
display: flex;
flex-wrap: wrap;
2023-01-09 13:02:16 -05:00
margin-right: -0.5em;
2022-04-20 20:03:18 +03:00
align-self: start;
.userHighlightCl {
padding: 2px 10px;
flex: 1 0 auto;
}
.userHighlightSel {
padding-top: 0;
padding-bottom: 0;
flex: 1 0 auto;
}
.userHighlightText {
width: 70px;
flex: 1 0 auto;
}
.userHighlightCl,
.userHighlightText,
.userHighlightSel {
vertical-align: top;
2023-01-09 13:02:16 -05:00
margin-right: 0.5em;
margin-bottom: 0.25em;
2022-04-20 20:03:18 +03:00
}
}
}
2023-01-09 13:02:16 -05:00
2022-04-20 20:03:18 +03:00
.user-interactions {
position: relative;
2025-07-29 17:38:08 +03:00
display: grid;
2025-07-30 10:00:03 +03:00
grid-template-columns: repeat(auto-fit, minmax(7.5em, 20%));
2025-07-29 17:38:08 +03:00
grid-gap: 0.6em;
2025-07-30 10:00:03 +03:00
max-width: 98vw;
2022-04-20 20:03:18 +03:00
2025-07-29 17:38:08 +03:00
.popover-trigger-button, .moderation-tools-button {
width: 100%;
2022-04-20 20:03:18 +03:00
}
2025-07-29 17:38:08 +03:00
> .btn-group, > button {
white-space: nowrap;
2022-04-20 20:03:18 +03:00
}
}
}
.sidebar .edit-profile-button {
display: none;
}
2025-07-29 17:38:08 +03:00
.user-extras {
padding: 1.2em 0.6em;
2025-07-29 18:38:41 +03:00
line-height: 1.5;
2022-04-20 20:03:18 +03:00
2025-07-29 18:38:41 +03:00
.user-stats {
display: block;
text-align: center;
width: 100%;
dl {
display: inline;
margin-right: 1em;
white-space: nowrap;
}
dd {
font-weight: bolder;
text-overflow: ellipsis;
overflow: hidden;
margin: 0;
}
dd, dt {
display: inline
}
/* stylelint-disable-next-line no-descending-specificity */
a {
text-decoration: none;
}
}
.birthday {
width: 100%;
text-align: center;
white-space: nowrap;
2025-07-29 17:38:08 +03:00
2025-07-29 18:38:41 +03:00
--icon: var(--text);
}
2025-07-29 17:38:08 +03:00
}
.user-profile-fields {
2023-01-09 13:02:16 -05:00
margin: 0 0.5em;
2022-04-20 20:03:18 +03:00
2025-07-29 17:38:08 +03:00
img {
object-fit: contain;
vertical-align: middle;
max-width: 100%;
max-height: 400px;
&.emoji {
width: 18px;
height: 18px;
}
}
.user-profile-field {
display: flex;
margin: 0.25em;
border: 1px solid var(--border);
border-radius: var(--roundness);
.user-profile-field-name,
.user-profile-field-value {
text-overflow: ellipsis;
white-space: nowrap;
overflow: hidden;
box-sizing: border-box;
line-height: 2em;
}
.user-profile-field-name {
flex: 0 1 50%;
font-weight: 600;
text-align: right;
color: var(--lightText);
min-width: 9em;
border-right: 1px solid var(--border);
padding-left: 1.2em;
padding-right: 0.6em;
}
.user-profile-field-value {
flex: 1 1 55%;
color: var(--text);
padding-left: 0.6em;
margin: 0;
}
}
}