rwadurian/frontend/admin-web/src/app/(dashboard)/notifications/notifications.module.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;
}
}