penpot/frontend/src/app/main/ui/dashboard/team.scss
2024-07-29 11:05:14 +02:00

545 lines
9.1 KiB
SCSS

// This Source Code Form is subject to the terms of the Mozilla Public
// License, v. 2.0. If a copy of the MPL was not distributed with this
// file, You can obtain one at http://mozilla.org/MPL/2.0/.
//
// Copyright (c) KALEIDOS INC
@use "common/refactor/common-refactor.scss" as *;
@use "common/refactor/common-dashboard";
// Dashboard team settings
.dashboard-team-settings {
display: grid;
grid-template-rows: auto auto 1fr;
justify-items: center;
gap: $s-24;
width: 100%;
border-top: $s-1 solid var(--panel-border-color);
overflow-y: auto;
}
.block {
display: grid;
grid-auto-rows: min-content;
gap: $s-8;
max-width: $s-1000;
width: $s-1000;
}
.info-block {
position: relative;
padding-top: $s-180;
}
.block-label {
@include headlineSmallTypography;
color: var(--title-foreground-color);
}
.block-text {
color: var(--title-foreground-color-hover);
}
.block-content {
display: grid;
grid-template-columns: $s-32 1fr;
align-items: center;
gap: $s-12;
}
.owner-icon {
width: $s-32;
height: $s-32;
border-radius: 50%;
}
.user-icon,
.document-icon,
.group-icon {
@extend .button-icon;
margin: 0 auto;
stroke: var(--icon-foreground);
}
.team-icon {
--update-button-opacity: 0;
position: absolute;
top: 0;
left: 0;
height: $s-120;
width: $s-120;
padding: $s-16;
&:hover {
--update-button-opacity: 1;
}
}
.team-image {
border-radius: 50%;
width: $s-120;
height: $s-120;
}
.update-overlay {
opacity: var(--update-button-opacity);
@include buttonStyle;
@include flexCenter;
position: absolute;
top: $s-16;
left: $s-16;
height: 100%;
width: 100%;
z-index: $z-index-modal;
border-radius: $br-circle;
background-color: var(--color-accent-primary);
}
.image-icon {
@extend .button-icon;
min-width: $s-24;
min-height: $s-24;
stroke: var(--icon-foreground-hover);
}
// TEAM MEMBERS PAGE
.dashboard-team-members {
display: grid;
justify-items: center;
width: 100%;
height: 100%;
padding-top: $s-20;
border-top: $s-1 solid var(--panel-border-color);
overflow-y: auto;
scrollbar-gutter: stable;
}
.team-members {
display: grid;
grid-template-rows: auto 1fr;
height: fit-content;
max-width: $s-1000;
width: $s-1000;
}
.table-header {
@include headlineSmallTypography;
display: grid;
align-items: center;
grid-template-columns: 43% 1fr $s-108 $s-12;
height: $s-40;
width: 100%;
max-width: $s-1000;
padding: 0 $s-16;
user-select: none;
color: var(--title-foreground-color);
}
.table-rows {
display: grid;
grid-auto-rows: $s-64;
gap: $s-16;
width: 100%;
height: 100%;
max-width: $s-1000;
margin-top: $s-16;
color: var(--title-foreground-color);
}
.table-row {
display: grid;
grid-template-columns: 43% 1fr auto;
align-items: center;
height: $s-64;
width: 100%;
padding: 0 $s-16;
border-radius: $br-8;
background-color: var(--dashboard-list-background-color);
color: var(--dashboard-list-foreground-color);
}
.title-field-name {
width: 43%;
min-width: $s-300;
}
.title-field-roles {
position: relative;
cursor: default;
}
.field-name {
display: grid;
grid-template-columns: auto 1fr;
gap: $s-16;
width: 43%;
min-width: $s-300;
}
.field-roles {
position: relative;
cursor: default;
}
.field-actions {
position: relative;
}
// MEMBER INFO
.member-image {
height: $s-32;
width: $s-32;
border-radius: $br-circle;
}
.member-info {
display: grid;
grid-template-rows: 1fr 1fr;
width: 100%;
}
.member-name,
.member-email {
@include textEllipsis;
@include bodyLargeTypography;
}
.member-email {
@include bodySmallTypography;
color: var(--dashboard-list-text-foreground-color);
}
.you {
color: var(--dashboard-list-text-foreground-color);
margin-left: $s-6;
}
// ROL INFO
.rol-selector {
position: relative;
display: grid;
grid-template-columns: 1fr auto;
align-items: center;
height: $s-32;
min-width: $s-160;
width: fit-content;
padding: $s-4 $s-8;
border-radius: $br-8;
border-color: var(--menu-background-color-hover);
background-color: var(--menu-background-color-hover);
font-size: $fs-14;
}
.has-priv {
cursor: pointer;
}
.rol-label {
user-select: none;
}
.roles-dropdown {
@extend .menu-dropdown;
bottom: calc(-1 * $s-76);
width: fit-content;
min-width: $s-160;
}
.rol-dropdown-item {
@extend .menu-item-base;
}
// MEMBER ACTIONS
.menu-icon {
@extend .button-icon;
stroke: var(--icon-foreground);
}
.menu-btn {
@include buttonStyle;
}
.actions-dropdown {
@extend .menu-dropdown;
bottom: calc(-1 * $s-32);
right: 0;
left: unset;
width: fit-content;
min-width: $s-160;
}
.action-dropdown-item {
@extend .menu-item-base;
}
// TEAM INVITATION PAGE
.dashboard-team-invitations {
display: grid;
justify-items: center;
width: 100%;
height: 100%;
padding-top: $s-20;
border-top: $s-1 solid var(--panel-border-color);
overflow-y: auto;
scrollbar-gutter: stable;
}
.invitations {
display: grid;
grid-template-rows: auto 1fr;
height: fit-content;
max-width: $s-1000;
width: $s-1000;
}
.table-row-invitations {
grid-template-columns: 43% 1fr $s-108 $s-12;
align-items: center;
}
.empty-invitations {
display: grid;
place-items: center;
align-content: center;
height: $s-156;
max-width: $s-1000;
width: 100%;
margin-top: $s-16;
border: $s-1 solid var(--panel-border-color);
border-radius: $br-8;
color: var(--dashboard-list-text-foreground-color);
}
.title-field-status {
position: relative;
cursor: default;
}
.field-email {
@include textEllipsis;
@include bodyLargeTypography;
display: grid;
align-items: center;
}
.invitations-dropdown {
bottom: calc(-1 * $s-112);
right: calc(-1 * $s-20);
}
// WEBHOOKS SECTION
.dashboard-team-webhooks {
display: grid;
grid-template-rows: auto 1fr;
justify-items: center;
gap: $s-24;
width: 100%;
height: 100%;
padding-top: $s-16;
border-top: $s-1 solid var(--panel-border-color);
overflow-y: auto;
}
.webhooks-hero-container {
display: grid;
gap: $s-32;
max-width: $s-1000;
width: $s-1000;
}
.webhooks-empty {
display: grid;
place-items: center;
align-content: center;
height: $s-156;
max-width: $s-1000;
width: 100%;
padding: $s-32;
border: $s-1 solid var(--panel-border-color);
border-radius: $br-8;
color: var(--dashboard-list-text-foreground-color);
}
.webhooks-hero {
font-size: $fs-14;
display: grid;
grid-template-rows: auto 1fr auto;
gap: $s-32;
margin-top: $s-32;
margin: 0;
padding: $s-32;
padding: 0;
width: $s-468;
}
.hero-title {
@include bigTitleTipography;
color: var(--dashboard-list-foreground-color);
}
.hero-desc {
color: var(--color-foreground-secondary);
margin-bottom: 0;
font-size: $fs-16;
max-width: $s-512;
}
.hero-btn {
@extend .button-primary;
height: $s-32;
max-width: $s-512;
}
.webhook-table {
height: fit-content;
}
.webhook-row {
display: grid;
align-items: center;
grid-template-columns: auto 1fr auto auto;
gap: $s-16;
}
.actions {
position: relative;
}
.webhook-actions-dropdown {
@extend .menu-dropdown;
right: calc(-1 * $s-16);
bottom: calc(-1 * $s-40);
width: fit-content;
min-width: $s-160;
}
.webhook-dropdown-item {
@extend .menu-item-base;
}
.success-icon {
@extend .button-icon;
stroke: var(--alert-icon-foreground-color-success);
}
.warning-icon {
@extend .button-icon;
stroke: var(--alert-icon-foreground-color-warning);
}
// INVITE MEMBERS MODAL
.modal-team-container {
@extend .modal-container-base;
@include menuShadow;
position: fixed;
top: $s-72;
right: $s-12;
left: unset;
width: $s-400;
padding: $s-32;
background-color: var(--modal-background-color);
&.hero {
top: $s-216;
right: $s-32;
}
}
.modal-title {
@include headlineMediumTypography;
height: $s-32;
color: var(--modal-title-foreground-color);
}
.role-select {
@include flexColumn;
row-gap: $s-8;
}
.arrow-icon {
@extend .button-icon;
stroke: var(--icon-foreground);
transform: rotate(90deg);
}
.role-title {
@include bodyLargeTypography;
margin: 0;
color: var(--modal-title-foreground-color);
}
.invitation-row {
margin-top: $s-8;
margin-bottom: $s-24;
}
.action-buttons {
display: flex;
justify-content: flex-end;
}
.accept-btn {
@extend .modal-accept-btn;
}
// WEBHOOKS MODAL
.modal-overlay {
@extend .modal-overlay-base;
}
.modal-container {
@extend .modal-container-base;
}
.modal-header {
margin-bottom: $s-24;
}
.modal-title {
@include uppercaseTitleTipography;
color: var(--modal-title-foreground-color);
}
.modal-close-btn {
@extend .modal-close-btn-base;
}
.modal-content {
@include flexColumn;
gap: $s-24;
@include bodySmallTypography;
margin-bottom: $s-24;
}
.fields-row {
@include flexColumn;
}
.select-title {
@include bodySmallTypography;
color: var(--modal-title-foreground-color);
}
.custom-input-checkbox {
align-items: flex-start;
}
.hint {
color: var(--modal-text-foreground-color);
}
.action-buttons {
@extend .modal-action-btns;
button {
@extend .modal-accept-btn;
}
.cancel-button {
@extend .modal-cancel-btn;
}
}
.email-input {
@extend .input-base;
@include bodySmallTypography;
height: auto;
}