Complete platform management workflows

This commit is contained in:
npc0-hue
2026-07-14 16:39:37 +08:00
parent 7e05d0a4e7
commit 4f33f761a3
106 changed files with 11313 additions and 460 deletions
+386 -9
View File
@@ -1203,6 +1203,48 @@ button {
align-items: end;
}
.workflow-hint-grid {
display: grid;
grid-template-columns: repeat(3, minmax(0, 1fr));
gap: 10px;
margin: 10px 0 12px;
}
.workflow-hint-card,
.form-guidance,
.role-impact-list {
display: grid;
gap: 4px;
padding: 10px 12px;
border: 1px solid var(--line);
border-radius: 8px;
background: var(--jelly-highlight), var(--glass-wash), var(--surface-solid);
color: var(--ink-soft);
box-shadow: inset 0 1px 0 var(--crystal-rim);
font-size: 12.5px;
line-height: 1.45;
}
.workflow-hint-card strong,
.form-guidance strong,
.role-impact-list strong {
color: var(--ink);
font-size: 13px;
}
.management-form-wide,
.role-impact-list {
grid-column: 1 / -1;
}
.role-impact-list {
margin: 0 0 12px;
}
.management-form .role-impact-list {
margin: 0;
}
.role-selector {
grid-column: 1 / -1;
display: flex;
@@ -1225,6 +1267,20 @@ button {
justify-content: flex-end;
}
.status-update-control {
min-width: 132px;
}
.status-update-control select {
min-height: 32px;
border: 1px solid var(--line-strong);
border-radius: 8px;
padding: 0 8px;
background: var(--surface-solid);
color: var(--ink);
font: inherit;
}
.profile-settings-page {
gap: 18px;
}
@@ -1352,7 +1408,7 @@ button {
.page-frame {
width: min(100%, 1180px);
display: grid;
gap: 18px;
gap: 8px;
}
.page-header {
@@ -1409,6 +1465,57 @@ button {
color: var(--success);
}
.page-summary-strip {
display: flex;
flex-wrap: wrap;
gap: 6px;
margin: -2px 0 0;
}
.page-summary-chip {
display: inline-flex;
align-items: baseline;
gap: 8px;
min-height: 28px;
padding: 4px 10px;
border: 1px solid color-mix(in srgb, var(--line) 72%, transparent);
border-left-width: 3px;
border-radius: 999px;
background: color-mix(in srgb, var(--surface) 52%, transparent);
color: var(--ink-faint);
-webkit-backdrop-filter: blur(14px) saturate(1.1);
backdrop-filter: blur(14px) saturate(1.1);
box-shadow: inset 0 1px 0 var(--crystal-rim);
}
.page-summary-chip dt,
.page-summary-chip dd {
margin: 0;
}
.page-summary-chip dt {
font-size: 12px;
font-weight: 650;
}
.page-summary-chip dd {
color: var(--ink);
font-size: 13px;
font-weight: 760;
}
.summary-tone-success {
border-left-color: var(--teal);
}
.summary-tone-warning {
border-left-color: var(--gold);
}
.summary-tone-neutral {
border-left-color: var(--accent);
}
/* ---- metric cards ---- */
.metric-grid {
@@ -2598,10 +2705,6 @@ button {
min-height: 52px;
}
.ai-provider-metrics {
grid-template-columns: repeat(3, minmax(0, 1fr));
}
.ai-provider-toolbar {
display: flex;
align-items: center;
@@ -2610,7 +2713,6 @@ button {
flex-wrap: wrap;
}
.ai-provider-workspace,
.server-workspace {
display: grid;
grid-template-columns: minmax(0, 1fr) minmax(300px, 360px);
@@ -2618,7 +2720,6 @@ button {
align-items: start;
}
.ai-provider-workspace > *,
.server-workspace > * {
min-width: 0;
}
@@ -2743,6 +2844,68 @@ button {
cursor: not-allowed;
}
.provider-actions-cell {
position: relative;
}
.human-row-actions {
justify-content: flex-start;
}
.human-row-actions button {
width: auto;
min-width: 58px;
height: 32px;
gap: 5px;
padding: 0 9px;
white-space: nowrap;
font-size: 12px;
font-weight: 700;
}
.human-row-actions .row-action-button-active {
border-color: var(--accent);
color: var(--accent-deep);
background: var(--glass-wash), var(--accent-soft);
}
.inline-action-menu {
position: absolute;
right: 10px;
z-index: 4;
display: grid;
gap: 6px;
min-width: 160px;
margin-top: 6px;
padding: 8px;
border: 1px solid var(--line-strong);
border-radius: 8px;
background: var(--frosted-surface), var(--surface-solid);
box-shadow: var(--jelly-inset), 0 16px 36px var(--glass-shadow);
}
.inline-action-menu button {
min-height: 32px;
display: inline-flex;
align-items: center;
gap: 7px;
padding: 0 9px;
border: 1px solid var(--line);
border-radius: 8px;
background: var(--jelly-highlight), var(--glass-wash), var(--surface-solid);
color: var(--ink-soft);
cursor: pointer;
font-weight: 700;
text-align: left;
}
.inline-action-menu button:hover,
.inline-action-menu button:focus-visible {
border-color: var(--accent);
outline: none;
color: var(--ink);
}
.form-header {
display: flex;
align-items: center;
@@ -2779,6 +2942,61 @@ button {
background: var(--danger-soft);
}
.provider-setup-guide {
grid-column: 1 / -1;
}
.provider-preset-grid {
display: grid;
grid-template-columns: repeat(4, minmax(0, 1fr));
gap: 8px;
}
.provider-preset-option {
min-height: 74px;
display: grid;
align-content: start;
gap: 4px;
padding: 10px;
border: 1px solid var(--line);
border-radius: 8px;
background: var(--jelly-highlight), var(--glass-wash), var(--surface-solid);
color: var(--ink-soft);
cursor: pointer;
text-align: left;
box-shadow: inset 0 1px 0 var(--crystal-rim);
}
.provider-preset-option strong {
color: var(--ink);
font-size: 13px;
}
.provider-preset-option span {
font-size: 12px;
line-height: 1.35;
}
.provider-preset-option:hover,
.provider-preset-option:focus-visible {
border-color: var(--accent);
outline: none;
box-shadow: inset 0 1px 0 var(--crystal-rim), 0 0 0 2px var(--accent-soft);
}
.field-help {
color: var(--ink-faint);
font-size: 11.5px;
font-weight: 600;
line-height: 1.4;
}
.form-helper-actions {
display: flex;
gap: 8px;
flex-wrap: wrap;
}
.provider-form label {
display: grid;
gap: 6px;
@@ -3204,6 +3422,60 @@ button {
box-shadow: var(--panel-shadow);
}
.management-dialog-panel {
width: min(720px, 100%);
height: auto;
max-height: min(760px, calc(100dvh - 32px));
overflow: auto;
border: 1px solid var(--line);
border-left: 1px solid var(--line);
border-radius: 8px;
box-shadow: var(--jelly-inset), inset 0 0 0 1px var(--diamond-line), 0 18px 48px var(--glass-shadow), 0 0 34px var(--moonbeam);
}
.management-dialog-wide {
width: min(920px, 100%);
}
.dialog-description {
margin: 0;
color: var(--ink-soft);
font-size: 14px;
line-height: 1.55;
}
.management-dialog-panel .provider-form,
.management-dialog-panel .management-form {
border: 0;
padding: 0;
background: transparent;
box-shadow: none;
backdrop-filter: none;
}
.management-dialog-panel .management-form {
grid-template-columns: repeat(2, minmax(0, 1fr));
}
.management-dialog-panel .dialog-form .role-selector,
.management-dialog-panel .dialog-form .confirm-actions {
grid-column: 1 / -1;
}
.management-dialog-panel .plugin-detail-panel,
.management-dialog-panel .plugin-group {
border: 0;
padding: 0;
background: transparent;
box-shadow: none;
clip-path: none;
}
.management-dialog-panel .plugin-group::before,
.management-dialog-panel .plugin-group::after {
content: none;
}
.plugin-detail-actions {
align-items: stretch;
}
@@ -3327,6 +3599,104 @@ button {
font-size: 12.5px;
}
/* ---- maintenance triage ---- */
.maintenance-triage-grid {
display: grid;
grid-template-columns: repeat(3, minmax(0, 1fr));
gap: 10px;
}
.triage-card {
min-height: 120px;
display: grid;
align-content: start;
gap: 6px;
padding: 13px;
border: 1px solid var(--line);
border-radius: 8px;
background: var(--corner-sparkle), var(--jelly-highlight), var(--glass-wash), var(--surface);
background-size: 52px 52px, auto, auto, auto;
background-position: right 8px top 6px, center, center, center;
background-repeat: no-repeat;
color: var(--ink-soft);
cursor: pointer;
text-align: left;
box-shadow: inset 0 1px 0 var(--crystal-rim), var(--panel-shadow);
}
.triage-card svg {
color: var(--accent-deep);
}
.triage-card span {
color: var(--ink-faint);
font-size: 12px;
font-weight: 700;
}
.triage-card strong {
color: var(--ink);
font-size: 18px;
}
.triage-card small {
color: var(--ink-soft);
line-height: 1.4;
}
.triage-card:hover,
.triage-card:focus-visible {
border-color: var(--accent);
outline: none;
box-shadow: inset 0 1px 0 var(--crystal-rim), 0 0 0 2px var(--accent-soft), var(--panel-shadow);
}
.maintenance-node-item {
grid-template-columns: minmax(170px, 1fr) auto minmax(160px, 0.8fr) minmax(220px, 1.2fr);
}
.maintenance-node-item .node-detail,
.maintenance-node-item .maintenance-actions {
grid-column: 1 / -1;
}
.node-detail {
display: grid;
gap: 6px;
padding: 8px 10px;
border: 1px dashed var(--line);
border-radius: 8px;
color: var(--ink-faint);
font-size: 12px;
}
.node-detail summary {
color: var(--ink-soft);
cursor: pointer;
font-weight: 700;
}
.node-detail[open] {
background: var(--glass-wash), var(--accent-soft);
}
.node-detail span {
display: inline-block;
margin-right: 10px;
}
.maintenance-actions {
display: flex;
flex-wrap: wrap;
gap: 8px;
justify-content: flex-end;
}
.maintenance-actions .theme-upload {
min-height: 30px;
}
/* ---- operation history ---- */
.operation-list {
@@ -3498,6 +3868,10 @@ button {
.confirm-actions button {
min-height: 38px;
padding: 0 16px;
display: inline-flex;
align-items: center;
justify-content: center;
gap: 6px;
border-radius: 8px;
border: 1px solid var(--line-strong);
background: var(--surface-solid);
@@ -3533,6 +3907,10 @@ button {
.management-form,
.user-management-item,
.workflow-hint-grid,
.provider-preset-grid,
.maintenance-triage-grid,
.maintenance-node-item,
.profile-settings-hero,
.profile-settings-grid,
.profile-settings-form-row,
@@ -3542,6 +3920,7 @@ button {
}
.user-actions,
.maintenance-actions,
.profile-settings-actions {
justify-content: flex-start;
}
@@ -3682,9 +4061,7 @@ button {
grid-template-columns: 1fr;
}
.ai-provider-metrics,
.server-metrics,
.ai-provider-workspace,
.server-workspace,
.form-grid {
grid-template-columns: 1fr;