364 lines
5.7 KiB
SCSS
364 lines
5.7 KiB
SCSS
@use '@/styles/variables' as *;
|
|
|
|
.notifications {
|
|
display: flex;
|
|
flex-direction: column;
|
|
gap: 24px;
|
|
|
|
&__header {
|
|
display: flex;
|
|
justify-content: space-between;
|
|
align-items: center;
|
|
}
|
|
|
|
&__title {
|
|
font-size: 24px;
|
|
font-weight: 600;
|
|
color: $text-primary;
|
|
}
|
|
|
|
&__actions {
|
|
display: flex;
|
|
gap: 12px;
|
|
}
|
|
|
|
// Tab 导航
|
|
&__tabs {
|
|
display: flex;
|
|
gap: 4px;
|
|
background: #f3f4f6;
|
|
padding: 4px;
|
|
border-radius: 10px;
|
|
width: fit-content;
|
|
}
|
|
|
|
&__tab {
|
|
padding: 10px 20px;
|
|
font-size: 14px;
|
|
font-weight: 500;
|
|
color: $text-secondary;
|
|
background: transparent;
|
|
border: none;
|
|
border-radius: 8px;
|
|
cursor: pointer;
|
|
transition: all 0.2s;
|
|
|
|
&:hover {
|
|
color: $text-primary;
|
|
}
|
|
|
|
&--active {
|
|
background: white;
|
|
color: $primary-color;
|
|
box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1);
|
|
}
|
|
}
|
|
|
|
&__card {
|
|
background: $card-background;
|
|
border-radius: 12px;
|
|
padding: 24px;
|
|
box-shadow: $shadow-base;
|
|
}
|
|
|
|
&__filters {
|
|
display: flex;
|
|
gap: 12px;
|
|
margin-bottom: 20px;
|
|
}
|
|
|
|
&__select {
|
|
padding: 8px 12px;
|
|
border: 1px solid $border-color;
|
|
border-radius: 8px;
|
|
font-size: 14px;
|
|
background: white;
|
|
min-width: 140px;
|
|
|
|
&:focus {
|
|
outline: none;
|
|
border-color: $primary-color;
|
|
}
|
|
}
|
|
|
|
&__list {
|
|
display: flex;
|
|
flex-direction: column;
|
|
gap: 16px;
|
|
}
|
|
|
|
&__loading,
|
|
&__empty,
|
|
&__error {
|
|
display: flex;
|
|
justify-content: center;
|
|
align-items: center;
|
|
gap: 12px;
|
|
padding: 60px 20px;
|
|
color: $text-secondary;
|
|
font-size: 14px;
|
|
}
|
|
|
|
&__error {
|
|
color: $error-color;
|
|
}
|
|
|
|
&__item {
|
|
background: white;
|
|
border: 1px solid $border-color;
|
|
border-radius: 10px;
|
|
padding: 16px 20px;
|
|
transition: all 0.2s;
|
|
|
|
&:hover {
|
|
box-shadow: 0 2px 8px rgba(0, 0, 0, 0.08);
|
|
}
|
|
|
|
&--disabled {
|
|
opacity: 0.6;
|
|
background: #fafafa;
|
|
}
|
|
}
|
|
|
|
&__itemHeader {
|
|
display: flex;
|
|
justify-content: space-between;
|
|
align-items: center;
|
|
margin-bottom: 10px;
|
|
}
|
|
|
|
&__itemMeta {
|
|
display: flex;
|
|
gap: 8px;
|
|
align-items: center;
|
|
}
|
|
|
|
&__tag {
|
|
display: inline-block;
|
|
padding: 2px 8px;
|
|
border-radius: 4px;
|
|
font-size: 12px;
|
|
font-weight: 500;
|
|
|
|
&--blue {
|
|
background: #e6f4ff;
|
|
color: #1677ff;
|
|
}
|
|
|
|
&--green {
|
|
background: #f6ffed;
|
|
color: #52c41a;
|
|
}
|
|
|
|
&--yellow {
|
|
background: #fffbe6;
|
|
color: #faad14;
|
|
}
|
|
|
|
&--purple {
|
|
background: #f9f0ff;
|
|
color: #722ed1;
|
|
}
|
|
|
|
&--orange {
|
|
background: #fff7e6;
|
|
color: #fa8c16;
|
|
}
|
|
|
|
&--gray {
|
|
background: #f5f5f5;
|
|
color: #8c8c8c;
|
|
}
|
|
}
|
|
|
|
&__priority,
|
|
&__target {
|
|
font-size: 12px;
|
|
color: $text-secondary;
|
|
padding: 2px 6px;
|
|
background: #f5f5f5;
|
|
border-radius: 4px;
|
|
}
|
|
|
|
&__disabled {
|
|
font-size: 12px;
|
|
color: $error-color;
|
|
padding: 2px 6px;
|
|
background: #fff1f0;
|
|
border-radius: 4px;
|
|
}
|
|
|
|
&__itemActions {
|
|
display: flex;
|
|
gap: 8px;
|
|
}
|
|
|
|
&__actionBtn {
|
|
padding: 4px 12px;
|
|
font-size: 13px;
|
|
color: $text-secondary;
|
|
background: transparent;
|
|
border: 1px solid $border-color;
|
|
border-radius: 6px;
|
|
cursor: pointer;
|
|
transition: all 0.2s;
|
|
|
|
&:hover {
|
|
color: $primary-color;
|
|
border-color: $primary-color;
|
|
}
|
|
|
|
&--danger {
|
|
&:hover {
|
|
color: $error-color;
|
|
border-color: $error-color;
|
|
}
|
|
}
|
|
}
|
|
|
|
&__itemTitle {
|
|
font-size: 16px;
|
|
font-weight: 600;
|
|
color: $text-primary;
|
|
margin-bottom: 8px;
|
|
}
|
|
|
|
&__itemContent {
|
|
font-size: 14px;
|
|
color: $text-secondary;
|
|
line-height: 1.6;
|
|
margin-bottom: 12px;
|
|
white-space: pre-wrap;
|
|
}
|
|
|
|
&__itemFooter {
|
|
display: flex;
|
|
gap: 20px;
|
|
font-size: 12px;
|
|
color: $text-disabled;
|
|
}
|
|
|
|
// 表单样式
|
|
&__form {
|
|
display: flex;
|
|
flex-direction: column;
|
|
gap: 16px;
|
|
}
|
|
|
|
&__formRow {
|
|
display: grid;
|
|
grid-template-columns: repeat(3, 1fr);
|
|
gap: 16px;
|
|
}
|
|
|
|
&__formGroup {
|
|
display: flex;
|
|
flex-direction: column;
|
|
gap: 6px;
|
|
|
|
label {
|
|
font-size: 14px;
|
|
font-weight: 500;
|
|
color: $text-primary;
|
|
}
|
|
|
|
input,
|
|
select,
|
|
textarea {
|
|
padding: 10px 12px;
|
|
border: 1px solid $border-color;
|
|
border-radius: 8px;
|
|
font-size: 14px;
|
|
transition: border-color 0.2s;
|
|
|
|
&:focus {
|
|
outline: none;
|
|
border-color: $primary-color;
|
|
}
|
|
|
|
&::placeholder {
|
|
color: $text-disabled;
|
|
}
|
|
}
|
|
|
|
textarea {
|
|
resize: vertical;
|
|
min-height: 100px;
|
|
}
|
|
}
|
|
|
|
&__formHint {
|
|
font-size: 12px;
|
|
color: $text-disabled;
|
|
}
|
|
|
|
&__modalFooter {
|
|
display: flex;
|
|
justify-content: flex-end;
|
|
gap: 12px;
|
|
}
|
|
|
|
// 标签选择器
|
|
&__tagSelector {
|
|
border: 1px solid $border-color;
|
|
border-radius: 8px;
|
|
padding: 12px;
|
|
max-height: 200px;
|
|
overflow-y: auto;
|
|
}
|
|
|
|
&__tagList {
|
|
display: flex;
|
|
flex-wrap: wrap;
|
|
gap: 8px;
|
|
}
|
|
|
|
&__tagOption {
|
|
display: flex;
|
|
align-items: center;
|
|
gap: 6px;
|
|
padding: 6px 12px;
|
|
background: #f3f4f6;
|
|
border-radius: 6px;
|
|
font-size: 13px;
|
|
cursor: pointer;
|
|
transition: all 0.15s;
|
|
|
|
input {
|
|
width: 16px;
|
|
height: 16px;
|
|
cursor: pointer;
|
|
}
|
|
|
|
&:hover {
|
|
background: #e5e7eb;
|
|
}
|
|
|
|
&--selected {
|
|
background: #dbeafe;
|
|
color: #1d4ed8;
|
|
}
|
|
}
|
|
|
|
&__tagColor {
|
|
width: 10px;
|
|
height: 10px;
|
|
border-radius: 3px;
|
|
flex-shrink: 0;
|
|
}
|
|
|
|
// 用户ID输入
|
|
&__userIdsInput {
|
|
font-family: monospace;
|
|
font-size: 13px;
|
|
line-height: 1.6;
|
|
min-height: 80px;
|
|
}
|
|
|
|
&__targetHint {
|
|
font-size: 12px;
|
|
color: $text-disabled;
|
|
margin-top: 4px;
|
|
}
|
|
}
|