Files
request-portal/src/webparts/requestPortal/features/myRequests/MyRequestsPanel.module.scss
T
2026-08-04 15:53:09 +05:00

274 lines
4.7 KiB
SCSS
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
@import '../../../../styles/design-tokens';
// Постоянная боковая панель (всегда открыта). Раскладку колонок задаёт корень;
// здесь — только внутреннее оформление панели.
.panel {
display: flex;
flex-direction: column;
height: 100%;
background: $white;
border: 1px solid $gray-200;
border-radius: $r-lg;
box-shadow: $sh-1;
overflow: hidden;
}
.header {
display: flex;
align-items: center;
justify-content: space-between;
gap: $sp-2;
padding: $sp-4 $sp-5;
border-bottom: 1px solid $gray-200;
}
.collapseToggle {
flex-shrink: 0;
display: inline-flex;
align-items: center;
justify-content: center;
width: 26px;
height: 26px;
padding: 0;
border: 1px solid $gray-300;
border-radius: $r-sm;
background: $white;
color: $navy-700;
cursor: pointer;
transition: .16s;
&:hover {
border-color: $gold-400;
color: $gold-600;
}
}
.panelCollapsed {
align-items: center;
padding: $sp-3 0;
}
.title {
font-family: $font-serif;
font-size: 18px;
color: $navy-900;
}
.searchWrap {
padding: $sp-3 $sp-5 0;
}
.search {
width: 100%;
padding: 8px 12px;
border: 1px solid $gray-300;
border-radius: $r-sm;
background: $white;
font-family: $font-sans;
font-size: $fs-sm;
color: $gray-900;
transition: .18s;
@include input-focus-gold;
&::placeholder {
color: $gray-400;
}
}
.body {
flex: 1;
overflow-y: auto;
padding: $sp-5;
font-size: $fs-sm;
}
.empty,
.error {
color: $gray-500;
}
.error {
color: $red-500;
}
.section + .section {
margin-top: $sp-6;
padding-top: $sp-6;
border-top: 1px solid $gray-200;
}
.sectionTitle {
font-family: $font-sans;
font-size: $fs-caption;
font-weight: 600;
color: $gray-500;
text-transform: uppercase;
letter-spacing: .04em;
margin-bottom: $sp-4;
}
.pager {
display: flex;
align-items: center;
gap: 4px;
margin-top: $sp-3;
flex-wrap: wrap;
}
.pagerBtn {
min-width: 24px;
height: 24px;
padding: 0 6px;
border: 1px solid $gray-200;
border-radius: $r-sm;
background: $white;
color: $gray-700;
font-family: $font-sans;
font-size: $fs-caption;
cursor: pointer;
transition: .16s;
&:hover:not(:disabled) {
border-color: $gold-400;
color: $gold-600;
}
&:disabled {
opacity: .4;
cursor: default;
}
}
.pagerBtnActive {
background: $navy-800;
border-color: $navy-800;
color: $white;
&:hover {
border-color: $navy-800 !important;
color: $white !important;
}
}
.pagerEllipsis {
color: $gray-400;
font-size: $fs-caption;
padding: 0 2px;
}
.table {
width: 100%;
border-collapse: collapse;
table-layout: fixed;
font-size: $fs-caption;
th {
text-align: left;
font-weight: 600;
color: $gray-500;
font-size: $fs-caption;
text-transform: uppercase;
letter-spacing: .03em;
padding: 6px 8px;
border-bottom: 1px solid $gray-200;
}
td {
// Высокие строки + перенос по словам: панель узкая, а длинные названия и
// e-mail не должны обрезаться — пусть занимают несколько строк.
height: 66px;
padding: $sp-3 8px;
border-bottom: 1px solid $gray-100;
vertical-align: middle;
white-space: normal;
overflow-wrap: break-word;
word-break: break-word;
line-height: 1.4;
}
}
.row {
transition: background .16s;
&:hover {
background: $gold-50;
}
}
.cellType {
width: 72px;
color: $gold-600;
font-weight: 600;
}
.cellTitle {
// Ширину не задаём — делит оставшееся место с cellAuthor (table-layout: fixed).
min-width: 0;
}
.titleLink {
display: block;
color: $gray-900;
text-decoration: none;
&:hover {
color: $gold-600;
text-decoration: underline;
}
}
.cellAuthor {
color: $gray-500;
}
.cellDate {
width: 64px;
color: $gray-400;
}
.cellStatus {
width: 96px;
}
.status {
// inline-block, а не flex-элемент: бейдж живёт внутри ячейки таблицы и
// переносится по словам (напр. «Возвращена на доработку» в узкой колонке).
display: inline-block;
padding: 3px 8px;
border-radius: $r-md;
font-size: $fs-caption;
font-weight: 500;
line-height: 1.3;
}
.statusDraft {
background: $gray-100;
color: $gray-700;
}
.statusOnApproval {
background: $gold-100;
color: $gold-600;
}
.statusApproved {
background: $green-50;
color: $green-600;
}
.statusRejected {
background: $red-50;
color: $red-500;
}
.statusReturned {
background: $blue-50;
color: $blue-600;
}
.statusDefault {
background: $gray-100;
color: $gray-500;
}