// 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 SUBSIDIARY SL @use "ds/typography.scss" as t; @use "ds/colors.scss" as *; @use "ds/spacing.scss" as *; @use "ds/_borders.scss" as *; @use "ds/_sizes.scss" as *; @use "ds/_utils.scss" as *; @use "ds/z-index.scss" as *; @use "common/refactor/common-dashboard"; @use "common/refactor/common-refactor.scss" as deprecated; // SIDEBAR COMPONENT .dashboard-sidebar { display: grid; grid-row: 1 / span 2; grid-column: 1 / span 2; grid-template-rows: auto 1fr auto; height: 100%; width: 100%; margin: 0 var(--sp-l) 0 0; border-right: $b-1 solid var(--panel-border-color); background-color: var(--panel-background-color); } // SIDEBAR CONTENT COMPONENT .sidebar-content-wrapper { display: flex; flex-direction: column; min-height: 0; height: 100%; overflow: hidden; } .sidebar-content { display: grid; grid-template-rows: auto auto auto auto 1fr; gap: var(--sp-xxl); flex: 1; min-height: 0; padding: 0; overflow: hidden auto; } .sidebar-content-nitrate { padding: var(--sp-m) 0 0 0; border-block-start: $b-1 solid var(--color-background-quaternary); } .separator { height: var(--sp-xxs); width: 94%; margin-left: 3%; } .overflow-separator { border-bottom: $b-1 solid var(--color-background-quaternary); } .sidebar-section-title { @include t.use-typography("headline-small"); padding: 0 var(--sp-s) var(--sp-s) var(--sp-xxl); color: var(--color-foreground-secondary); } // Sections .sidebar-nav { margin: 0; user-select: none; } .pinned-projects { overflow-y: auto; } .sidebar-nav-item { cursor: pointer; &:hover { background-color: var(--sidebar-element-background-color-hover); span { color: var(--sidebar-element-foreground-color-hover); } } &.current { background-color: var(--sidebar-element-background-color-selected); .element-title { color: var(--sidebar-element-foreground-color-selected); } } } .recent-projects svg { stroke: var(--main-icon-foreground); } .sidebar-link { display: block; padding: var(--sp-s) var(--sp-s) var(--sp-s) var(--sp-xxl); font-weight: deprecated.$fw400; width: 100%; &:hover { text-decoration: none; } } .project-element { padding: var(--sp-s) var(--sp-s) var(--sp-s) var(--sp-xxl); } .element-title { @include deprecated.text-ellipsis; width: deprecated.$s-256; color: var(--color-foreground-primary); font-size: deprecated.$fs-14; } // Pinned projects .sidebar-empty-placeholder { padding: var(--sp-m); color: var(--empty-message-foreground-color); display: flex; align-items: center; } .pin-icon { @extend %button-icon-small; stroke: var(--icon-foreground); margin: 0 var(--sp-m); } .empty-text { font-size: deprecated.$fs-12; } // Search .sidebar-search { position: relative; display: grid; grid-template-columns: 1fr; align-items: center; border: $b-1 solid transparent; margin: 0 var(--sp-l); border-radius: $br-8; background-color: var(--search-bar-input-background-color); } .input-text { @include t.use-typography("title-small"); height: $sz-40; width: 100%; padding: $sz-6 var(--sp-m); margin: 0; border: transparent; border-radius: $br-8; background: transparent; color: var(--search-bar-foreground-color); &:focus, &:focus-within, &:focus-visible { outline: none; border: $b-1 solid var(--search-bar-input-border-color-focus); } ::placeholder { color: var(--search-bar-placeholder-foreground-color); } } .search-btn { @include deprecated.button-style; @include deprecated.flex-center; position: absolute; right: 0; height: var(--sp-xxl); width: var(--sp-xxxl); padding: 0 var(--sp-s); } .search-icon, .clear-search-btn { @extend %button-icon; --sidebar-search-foreground-color: var(--search-bar-icon-foreground-color); stroke: var(--sidebar-search-foreground-color); } .clear-search-btn:hover { --sidebar-search-foreground-color: var(--search-bar-icon-foreground-color-hover); } // Profile .profile-section { position: relative; display: grid; grid-template-columns: 1fr auto; padding: var(--sp-m) var(--sp-l); border-top: $b-1 solid var(--panel-border-color); background-color: var(--profile-section-background-color); cursor: pointer; } .profile { @include deprecated.button-style; display: grid; grid-template-columns: auto 1fr; gap: var(--sp-s); cursor: pointer; text-align: left; } .profile-fullname { @include t.use-typography("title-small"); @include deprecated.text-ellipsis; align-self: center; max-width: var(--sp-l) 0; color: var(--profile-foreground-color); } .profile-img { height: $sz-40; width: $sz-40; border-radius: $br-circle; } .profile-dropdown { @extend %menu-dropdown; inset-inline-start: var(--sp-s); inset-block-end: px2rem(72); // 72 is the height of the profile button min-width: calc(100% - var(--sp-s)); // TODO ADD animation fadeInUp } .profile-dropdown-item { @extend %menu-item-base; @include t.use-typography("body-medium"); block-size: $sz-40; margin-block-end: var(--sp-xs); padding: var(--sp-s); padding-inline-start: var(--sp-l); &:hover { color: var(--menu-foreground-color-hover); .open-arrow { --icon-stroke-color: var(--menu-foreground-color-hover); } } } .profile-dropdown-item .open-arrow { @include deprecated.flex-center; } .profile-dropdown-item .open-arrow svg { @extend %button-icon; stroke: var(--icon-foreground); } .sub-menu { @extend %menu-dropdown; inset-inline-start: calc(deprecated.$s-292 + var(--sp-s)); min-width: deprecated.$s-192; } // Each submenu is positioned via its bottom edge; the visual top lands // at `inset-block-end + submenu_height`. Help & Learning (3 items, // taller) needs the same inset as Community (2 items, shorter) so that // its top edge sits one row above Community — aligning with the // "Help & Learning" trigger row in the parent menu. .sub-menu.help-learning { inset-block-end: deprecated.$s-120; } .sub-menu.community { inset-block-end: deprecated.$s-120; } .sub-menu.about { inset-block-end: $sz-24; } .submenu-item { @extend %menu-item-base; @include t.use-typography("body-medium"); block-size: $sz-40; margin-block-end: var(--sp-xs); padding-block: var(--sp-s); padding-inline: var(--sp-l); &:hover { color: var(--menu-foreground-color-hover); } &.checking { color: var(--color-foreground-secondary); pointer-events: none; &:hover { color: var(--color-foreground-secondary); background-color: transparent; } } } .checking-icon { flex-shrink: 0; animation: spin-animation 1s infinite linear; } .submenu-separator { border-top: $b-1 solid var(--color-background-quaternary); margin: 0; } .about-penpot { align-items: baseline; display: grid; grid-template-columns: auto 1fr; } .menu-version { @include t.use-typography("code-font"); @include deprecated.text-ellipsis; color: var(--color-foreground-secondary); margin-inline-start: var(--sp-s); text-transform: uppercase; } .profile-separator { height: $sz-6; border-top: $b-1 solid var(--color-background-quaternary); } .item-with-icon { display: grid; grid-template-columns: auto 1fr; gap: var(--sp-s); } .exit-icon { @extend %button-icon; stroke: var(--icon-foreground); } .upgrade-plan-section { @include deprecated.button-style; display: flex; justify-content: space-between; border: $b-1 solid var(--color-background-quaternary); border-radius: var(--sp-s); padding: var(--sp-m); margin: var(--sp-m); color: var(--color-foreground-secondary); cursor: pointer; } .penpot-free { @include t.use-typography("body-medium"); display: flex; flex-direction: column; text-align: left; } .no-limits { @include t.use-typography("body-small"); } .power-up { @include t.use-typography("body-small"); color: var(--color-accent-tertiary); }