feat: add file storage settings and uploads

This commit is contained in:
2026-05-13 20:23:45 +08:00
parent 0d0d0b9115
commit fc5dfd6bc5
21 changed files with 3401 additions and 72 deletions
+120
View File
@@ -1812,6 +1812,121 @@
justify-content: flex-end;
}
.fileStoragePanel {
display: grid;
gap: 14px;
}
.fileStorageToolbar {
display: flex;
align-items: center;
justify-content: space-between;
gap: 12px;
padding: 14px 16px;
border: 1px solid var(--border);
border-radius: 10px;
background: #fff;
}
.fileStorageSettingsCard {
display: grid;
grid-template-columns: minmax(0, 1fr) minmax(260px, 380px) auto;
align-items: center;
gap: 14px;
padding: 14px 16px;
border: 1px solid var(--border);
border-radius: 10px;
background: #fff;
}
.fileStorageSettingsCard > div {
display: grid;
gap: 3px;
}
.fileStorageSettingsCard > label {
min-width: 0;
}
.fileStorageToolbar > div {
display: grid;
gap: 3px;
}
.fileStorageToolbar strong {
color: var(--text-normal);
}
.fileStorageToolbar span,
.fileStorageSettingsCard span,
.fileStorageMeta span {
color: var(--muted-foreground);
font-size: var(--font-size-xs);
line-height: 1.45;
}
.fileStorageGrid {
display: grid;
grid-template-columns: repeat(2, minmax(0, 1fr));
gap: 14px;
}
.fileStorageCard {
display: grid;
gap: 12px;
padding: 16px;
border: 1px solid var(--border);
border-radius: 10px;
background: #fff;
}
.fileStorageCard header,
.fileStorageCard footer {
display: flex;
align-items: center;
gap: 10px;
}
.fileStorageCard header > div:nth-child(2) {
display: grid;
min-width: 0;
flex: 1;
gap: 3px;
}
.fileStorageCard strong,
.fileStorageCard header span,
.fileStorageMeta span {
overflow: hidden;
text-overflow: ellipsis;
}
.fileStorageMeta {
display: grid;
gap: 7px;
}
.fileStorageMeta span {
padding: 7px 9px;
border: 1px solid var(--border-subtle);
border-radius: 8px;
background: var(--surface-subtle);
}
.fileStorageCard footer {
justify-content: flex-end;
}
.fileStorageDialogBody {
grid-template-columns: repeat(2, minmax(0, 1fr));
}
.fileStorageSceneGrid {
display: grid;
grid-template-columns: repeat(2, minmax(0, 1fr));
gap: 10px;
}
.runtimePolicyDialog {
width: min(980px, 100%);
}
@@ -1983,6 +2098,7 @@
.providerCatalogGrid,
.baseModelGrid,
.runtimePolicyGrid,
.fileStorageGrid,
.platformGrid,
.accessPermissionGrid,
.platformModelChoices {
@@ -2023,7 +2139,11 @@
.platformModelRow,
.platformModelToolbar,
.runtimePolicyGrid,
.fileStorageGrid,
.fileStorageSettingsCard,
.fileStorageSceneGrid,
.runtimePolicyFormBody,
.fileStorageDialogBody,
.runtimePolicyRows,
.runnerActionGrid,
.accessPermissionGrid,
+82
View File
@@ -63,6 +63,88 @@
transform: rotate(-8deg);
}
.composerUpload:disabled {
cursor: not-allowed;
opacity: 0.58;
}
.composerUploadSpinner {
animation: composer-upload-spin 0.9s linear infinite;
}
.composerInputStack {
display: grid;
min-width: 0;
gap: 8px;
}
.composerUploadArea {
display: grid;
gap: 6px;
}
.composerUploadList {
display: flex;
min-width: 0;
flex-wrap: wrap;
gap: 6px;
}
.composerUploadChip {
display: inline-flex;
max-width: min(100%, 320px);
min-height: 28px;
align-items: center;
gap: 6px;
padding: 4px 7px;
border: 1px solid var(--border);
border-radius: var(--radius-sm);
background: var(--surface-muted);
color: var(--text-normal);
font-size: var(--font-size-xs);
}
.composerUploadChip span {
min-width: 0;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
.composerUploadChip small {
flex: 0 0 auto;
color: var(--muted-foreground);
}
.composerUploadChip button {
display: grid;
width: 18px;
height: 18px;
place-items: center;
border: 0;
border-radius: 999px;
background: transparent;
color: var(--text-soft);
padding: 0;
}
.composerUploadChip button:hover {
background: var(--surface);
color: var(--text-normal);
}
.composerUploadMessage {
color: var(--muted-foreground);
font-size: var(--font-size-xs);
line-height: var(--line-height-relaxed);
}
@keyframes composer-upload-spin {
to {
transform: rotate(360deg);
}
}
.composerBody .shTextarea {
min-height: 88px;
border: 0;