Smail/frontend/src/views/components/SettingsSubmenu/SettingsSubmenu.css
smail 8178b02636
Some checks are pending
Security Checks / security (push) Waiting to run
优化单屏页面布局与长列表分页
2026-09-06 17:14:02 +08:00

249 lines
4.7 KiB
CSS

.settings-submenu {
grid-area: submenu;
position: sticky;
top: 0;
min-width: 0;
padding: 2px 0 2px 12px;
border-left: 1px solid var(--pm-border-color);
--submenu-accent: var(--pm-primary-color);
}
.settings-submenu-heading {
display: flex;
flex-direction: row-reverse;
align-items: center;
justify-content: space-between;
gap: 6px;
padding: 2px 8px 10px;
}
.settings-submenu-caption {
color: var(--pm-text-muted);
font-size: 11px;
line-height: 1.5;
}
.settings-submenu-heading strong {
color: var(--pm-text-secondary);
font-size: 13px;
font-weight: 600;
}
.settings-submenu-list {
display: grid;
gap: 2px;
}
.settings-submenu-item {
position: relative;
width: 100%;
min-height: 34px;
padding: 7px 10px;
border: 0;
border-radius: 8px;
background: transparent;
color: var(--pm-text-secondary);
font: inherit;
font-size: 13px;
line-height: 1.5;
text-align: left;
cursor: pointer;
transition: color .18s ease, background-color .18s ease;
}
.settings-submenu-item:hover:not(.active) {
color: var(--pm-text-primary);
background: var(--pm-bg-hover);
}
.settings-submenu-item.active {
color: var(--submenu-accent);
font-weight: 600;
background: color-mix(in srgb, var(--submenu-accent) 10%, var(--pm-bg-secondary));
}
.settings-submenu-item.active::before {
content: '';
position: absolute;
top: 10px;
bottom: 10px;
left: -13px;
width: 3px;
border-radius: 3px;
background: var(--submenu-accent);
}
.settings-submenu-item:focus-visible {
outline: 2px solid var(--submenu-accent);
outline-offset: -2px;
}
.settings-submenu-chevron {
float: right;
width: 6px;
height: 6px;
margin: 5px 3px 0 8px;
border-right: 1.5px solid currentColor;
border-bottom: 1.5px solid currentColor;
transform: rotate(45deg);
}
.has-children {
margin-top: 6px;
padding: 4px;
border: 1px solid var(--pm-border-color);
border-radius: 12px;
background: var(--pm-bg-primary);
}
.has-children > .settings-submenu-item {
background: transparent;
font-size: 12px;
font-weight: 600;
}
.has-children > .settings-submenu-item::before {
content: none;
}
.settings-tertiary-list {
display: grid;
gap: 3px;
padding: 2px;
}
.settings-tertiary-item {
display: flex;
align-items: center;
gap: 8px;
min-width: 0;
min-height: 37px;
padding: 6px 8px;
border: 1px solid transparent;
border-radius: 8px;
background: transparent;
color: var(--pm-text-secondary);
font: inherit;
font-size: 12px;
line-height: 1.5;
text-align: left;
cursor: pointer;
}
.settings-tertiary-item.active {
color: var(--submenu-accent);
background: color-mix(in srgb, var(--submenu-accent) 8%, var(--pm-bg-secondary));
border-color: color-mix(in srgb, var(--submenu-accent) 22%, var(--pm-border-color));
font-weight: 600;
}
.settings-tertiary-icon {
display: grid;
place-items: center;
flex: none;
width: 24px;
height: 24px;
border-radius: 6px;
color: var(--submenu-accent);
background: color-mix(in srgb, var(--submenu-accent) 8%, transparent);
}
.settings-tertiary-icon svg {
width: 16px;
height: 16px;
stroke: currentColor;
stroke-width: 1.6;
stroke-linecap: round;
stroke-linejoin: round;
}
.settings-tertiary-current {
width: 5px;
height: 5px;
margin-left: auto;
border-radius: 50%;
background: currentColor;
}
@media (min-width: 769px) and (max-height: 800px) {
.settings-submenu-item {
min-height: 30px;
padding-block: 5px;
}
.settings-tertiary-item {
min-height: 33px;
padding-block: 4px;
}
.settings-submenu-heading {
padding-bottom: 8px;
}
}
.settings-tertiary-item:hover:not(.active) {
color: var(--pm-text-primary);
background: var(--pm-bg-hover);
}
.settings-tertiary-item:focus-visible {
outline: 2px solid var(--submenu-accent);
outline-offset: -2px;
}
@media (prefers-color-scheme: dark) {
.settings-submenu {
--submenu-accent: var(--pm-primary-light-3);
}
}
@container settings-content (max-width: 560px) {
.settings-submenu {
position: static;
padding: 12px;
border: 1px solid var(--pm-border-color);
border-radius: 12px;
background: var(--pm-bg-primary);
}
.settings-submenu-heading {
display: flex;
align-items: center;
gap: 8px;
padding: 0 4px 8px;
}
.settings-submenu-list {
display: flex;
flex-wrap: wrap;
padding: 2px;
}
.settings-submenu-item {
flex: 0 0 auto;
width: auto;
white-space: nowrap;
}
.settings-submenu-entry {
flex: 0 0 auto;
}
.has-children {
flex-basis: 100%;
}
.settings-tertiary-list {
grid-template-columns: repeat(3, minmax(0, 1fr));
}
.settings-submenu-item.active::before {
top: auto;
bottom: 2px;
left: 12px;
right: 12px;
width: auto;
height: 2px;
}
}