feat: customize sessions and overview with faster account workflows

This commit is contained in:
陈煜 committed 2026-10-03 18:07:19 +08:00
1 parent 9a133e82e9
commit 425b45c91a
40 files changed
+1656 -335

No files matched your search

+249
View File
@@ -1578,3 +1578,252 @@ textarea,
font-size: 14px;
color: #456352;
}
.settings-tabs {
display: flex;
flex-direction: row;
justify-content: flex-start;
height: auto;
flex-wrap: wrap;
gap: 8px;
margin-bottom: 20px;
padding: 12px;
background: #fff;
border: 1px solid var(--line);
border-radius: 14px;
}
.settings-tabs button {
flex: 0 0 auto;
flex-direction: row;
align-items: center;
border-radius: 8px;
font-size: 13px;
border: 0;
background: transparent;
padding: 10px 14px;
}
.settings-tabs button[aria-current='page'] {
background: #e9f3ed;
color: #234c3b;
font-weight: 600;
}
.menu-preferences {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
gap: 0 24px;
margin-bottom: 20px;
}
.metrics {
grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));
}
.dashboard-grid.single-card {
grid-template-columns: minmax(0, 1fr);
}
.schedule-dialog {
width: min(620px, calc(100vw - 32px));
}
.schedule-dialog form {
display: grid;
gap: 14px;
}
.schedule-dialog label {
display: grid;
gap: 6px;
}
.schedule-dialog .actions {
justify-content: flex-end;
}
.toast-viewport {
position: fixed;
inset: 20px 20px auto auto;
margin: 0;
width: min(380px, calc(100vw - 32px));
max-height: calc(100vh - 40px);
overflow-y: auto;
padding: 0;
border: 0;
background: transparent;
color: var(--ink);
}
.toast-viewport:popover-open {
display: grid;
gap: 10px;
}
.toast-viewport::backdrop {
display: none;
}
.toast {
display: flex;
align-items: flex-start;
gap: 12px;
padding: 16px;
border: 1px solid #b9d3c3;
border-radius: 12px;
background: #f5fcf7;
box-shadow: 0 8px 32px #163c2526;
animation: toast-enter 0.18s ease-out;
}
.toast.error {
border-color: #e7b9b9;
background: #fff7f7;
}
.toast p {
flex: 1;
margin: 0;
overflow-wrap: anywhere;
line-height: 1.6;
font-size: 14px;
}
.toast-symbol {
display: grid;
place-items: center;
border-radius: 50%;
background: #d7eddf;
color: #246240;
width: 24px;
height: 24px;
flex-shrink: 0;
font-weight: 700;
}
.toast.error .toast-symbol {
background: #f8dcdc;
color: #b42318;
}
.toast button {
padding: 0;
width: 24px;
height: 24px;
min-height: 24px;
flex-shrink: 0;
font-size: 20px;
}
@keyframes toast-enter {
from {
opacity: 0;
transform: translateX(12px);
}
to {
opacity: 1;
transform: translateX(0);
}
}
@media (prefers-reduced-motion: reduce) {
.toast {
animation: none;
}
}
@media (max-width: 600px) {
.metrics {
grid-template-columns: 1fr;
}
.toast-viewport {
inset: 12px 16px auto auto;
}
.settings-tabs button {
flex: 1 0 40%;
}
}
.schedule-dialog form {
grid-template-columns: repeat(2, minmax(0, 1fr));
}
.schedule-dialog label:has(textarea),
.schedule-dialog form > .actions {
grid-column: 1/-1;
}
.schedule-dialog textarea {
min-height: 64px;
}
@media (max-width: 520px) {
.schedule-dialog form {
grid-template-columns: 1fr;
}
}
.quick-transfer-widget {
position: fixed;
right: 20px;
top: 50%;
transform: translateY(-50%);
z-index: 30;
max-width: calc(100vw - 32px);
}
.quick-transfer-toggle {
box-shadow: 0 5px 20px #17453130;
}
.quick-transfer-card {
width: 320px;
max-width: 100%;
max-height: 70vh;
overflow-y: auto;
padding: 18px;
background: #fff;
border: 1px solid #bed2c4;
border-radius: 16px;
box-shadow: 0 10px 36px #17453125;
}
.quick-transfer-card h2 {
font-size: 16px;
margin: 0;
}
.quick-transfer-card form,
.quick-transfer-card label {
display: grid;
gap: 10px;
}
.quick-transfer-pair {
display: flex;
align-items: center;
gap: 10px;
margin: 10px 0;
}
.quick-transfer-pair > div {
display: grid;
gap: 4px;
flex: 1;
min-width: 0;
}
.quick-transfer-pair strong {
overflow-wrap: anywhere;
font-size: 14px;
}
.quick-transfer-pair span,
.quick-transfer-card .muted {
font-size: 11px;
}
.position-card.quick-source {
border-color: #277b61;
box-shadow: 0 0 0 2px #277b6133;
}
.position-card.quick-target {
border-color: #587fa8;
box-shadow: 0 0 0 2px #587fa833;
}
@media (max-width: 600px) {
.quick-transfer-widget {
right: 12px;
}
.quick-transfer-card {
width: 230px;
padding: 12px;
}
}
.position-grid.quick-transfer-select {
padding-right: 340px;
}
@media (max-width: 600px) {
.quick-transfer-widget {
top: auto;
bottom: 80px;
transform: none;
}
.quick-transfer-card {
width: calc(100vw - 24px);
max-height: 36vh;
}
.position-grid.quick-transfer-select {
padding-right: 0;
padding-bottom: 300px;
}
}