feat: improve model catalog aggregation

This commit is contained in:
2026-05-11 17:44:57 +08:00
parent ec87816c95
commit 0431cb8157
41 changed files with 4745 additions and 550 deletions
+275 -1
View File
@@ -671,10 +671,250 @@
background: var(--surface);
}
.shDateRangePicker.ant-picker {
min-height: 36px;
padding: 0 10px;
border-color: var(--input);
border-radius: var(--control-radius);
background: var(--surface);
color: var(--text-normal);
font-family: inherit;
font-size: var(--font-size-base);
box-shadow: 0 1px 2px rgba(16, 24, 40, 0.04);
transition: border-color 0.16s ease, box-shadow 0.16s ease;
}
.shDateRangePicker.ant-picker:hover,
.shDateRangePicker.ant-picker-focused {
border-color: var(--ring);
box-shadow: 0 0 0 1px var(--ring);
}
.shDateRangePicker.ant-picker-disabled {
background: var(--surface-muted);
opacity: 0.64;
}
.shDateRangePicker .ant-picker-input > input {
color: var(--text-normal);
font-family: inherit;
font-size: var(--font-size-base);
font-weight: var(--font-weight-regular);
}
.shDateRangePicker .ant-picker-input > input::placeholder {
color: var(--muted-foreground);
font-weight: var(--font-weight-regular);
}
.shDateRangePicker .ant-picker-active-bar {
background: var(--primary);
}
.shDateRangePicker .ant-picker-range-separator,
.shDateRangePicker .ant-picker-suffix,
.shDateRangePicker .ant-picker-clear {
color: var(--text-soft);
}
.shDateRangePicker .ant-picker-clear {
background: var(--surface);
}
.shDateRangePickerPopup {
font-family: inherit;
}
.shDateRangePickerPopup .ant-picker-panel-container {
overflow: hidden;
border: 1px solid var(--border);
border-radius: var(--radius-lg);
background: var(--popover);
color: var(--popover-foreground);
box-shadow: var(--shadow-dialog);
}
.shDateRangePickerPopup .ant-picker-panel,
.shDateRangePickerPopup .ant-picker-date-panel,
.shDateRangePickerPopup .ant-picker-time-panel,
.shDateRangePickerPopup .ant-picker-footer,
.shDateRangePickerPopup .ant-picker-content th,
.shDateRangePickerPopup .ant-picker-header {
border-color: var(--border-subtle);
}
.shDateRangePickerPopup .ant-picker-header,
.shDateRangePickerPopup .ant-picker-content th,
.shDateRangePickerPopup .ant-picker-cell,
.shDateRangePickerPopup .ant-picker-time-panel-column > li.ant-picker-time-panel-cell .ant-picker-time-panel-cell-inner {
color: var(--text-soft);
font-family: inherit;
font-size: var(--font-size-sm);
}
.shDateRangePickerPopup .ant-picker-header-view,
.shDateRangePickerPopup .ant-picker-header button,
.shDateRangePickerPopup .ant-picker-cell-in-view,
.shDateRangePickerPopup .ant-picker-time-panel-column > li.ant-picker-time-panel-cell-selected .ant-picker-time-panel-cell-inner {
color: var(--text-strong);
}
.shDateRangePickerPopup .ant-picker-cell-inner {
border-radius: var(--control-radius);
}
.shDateRangePickerPopup .ant-picker-cell-in-view.ant-picker-cell-today .ant-picker-cell-inner::before {
border-color: var(--ring);
border-radius: var(--control-radius);
}
.shDateRangePickerPopup .ant-picker-cell-in-view.ant-picker-cell-selected .ant-picker-cell-inner,
.shDateRangePickerPopup .ant-picker-cell-in-view.ant-picker-cell-range-start .ant-picker-cell-inner,
.shDateRangePickerPopup .ant-picker-cell-in-view.ant-picker-cell-range-end .ant-picker-cell-inner {
background: var(--primary);
color: var(--primary-foreground);
}
.shDateRangePickerPopup .ant-picker-cell-in-view.ant-picker-cell-in-range::before,
.shDateRangePickerPopup .ant-picker-cell-in-view.ant-picker-cell-range-start:not(.ant-picker-cell-range-start-single)::before,
.shDateRangePickerPopup .ant-picker-cell-in-view.ant-picker-cell-range-end:not(.ant-picker-cell-range-end-single)::before {
background: var(--surface-muted);
}
.shDateRangePickerPopup .ant-picker-cell-in-view.ant-picker-cell-range-hover::before,
.shDateRangePickerPopup .ant-picker-cell-in-view.ant-picker-cell-range-hover-start::before,
.shDateRangePickerPopup .ant-picker-cell-in-view.ant-picker-cell-range-hover-end::before {
background: var(--accent);
}
.shDateRangePickerPopup .ant-picker-cell:hover .ant-picker-cell-inner,
.shDateRangePickerPopup .ant-picker-time-panel-column > li.ant-picker-time-panel-cell .ant-picker-time-panel-cell-inner:hover {
background: var(--accent);
}
.shDateRangePickerPopup .ant-picker-time-panel-column > li.ant-picker-time-panel-cell-selected .ant-picker-time-panel-cell-inner {
background: var(--surface-muted);
font-weight: var(--font-weight-semibold);
}
.shDateRangePickerPopup .ant-picker-ok .ant-btn-primary {
border-color: var(--primary);
border-radius: var(--control-radius);
background: var(--primary);
color: var(--primary-foreground);
box-shadow: none;
}
.shDateRangePickerPopup .ant-picker-now-btn {
color: var(--text-normal);
}
.shTable {
overflow: auto;
}
.shTableViewportCard {
display: grid;
max-height: var(--sh-table-viewport-height, calc(100dvh - 142px));
min-height: 0;
}
.shTableViewportPanel {
display: flex;
min-height: 0;
max-height: var(--sh-table-viewport-height, calc(100dvh - 142px));
flex-direction: column;
gap: var(--sh-table-viewport-gap, 14px);
overflow: hidden;
}
.shTableViewportPanel > .formMessage {
margin: 0;
}
.shTableViewportLayout {
display: flex;
min-height: 0;
max-height: 100%;
flex: 0 1 auto;
flex-direction: column;
gap: var(--sh-table-viewport-gap, 14px);
overflow: hidden;
}
.shTableToolbar {
display: grid;
flex: 0 0 auto;
align-items: end;
gap: 12px;
}
.shTableSummary,
.shTableFooter,
.shTablePageActions {
display: flex;
align-items: center;
gap: 10px;
}
.shTableFooter {
flex: 0 0 auto;
flex-wrap: wrap;
}
.shTableFooterGroup {
display: flex;
min-width: 0;
align-items: center;
gap: 10px;
}
.shTableSummary,
.shTableFooter {
justify-content: space-between;
color: var(--text-soft);
font-size: var(--font-size-sm);
}
.shTableFooter .shLabel {
width: 116px;
grid-template-columns: auto minmax(0, 1fr);
align-items: center;
}
.shTablePageJump {
display: flex;
align-items: center;
gap: 6px;
}
.shTableFooterGroup,
.shTablePageJump,
.shTablePageActions {
flex-wrap: wrap;
}
.shTablePageJump .shInput {
width: 58px;
text-align: center;
}
.shTableViewport {
flex: 0 1 auto;
min-height: 0;
overflow: auto;
border: 1px solid var(--border-subtle);
border-radius: var(--radius-md);
background: var(--surface);
overscroll-behavior: contain;
}
.shTableViewport .shTableHeader {
position: sticky;
top: 0;
z-index: 1;
}
.shTableRow {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(118px, 1fr));
@@ -706,6 +946,39 @@
font-size: var(--font-size-sm);
}
.shTableCompact .shTableHead,
.shTableCompact .shTableCell {
min-height: 30px;
padding: 5px 9px;
font-size: var(--font-size-xs);
line-height: 1.3;
}
.shTableCompact .shTableHead {
font-weight: var(--font-weight-semibold);
}
.shTableCompact .shTableRow {
font-size: var(--font-size-xs);
}
.shTableCompact .shBadge {
min-height: 18px;
padding: 0 6px;
font-size: 0.6875rem;
}
.shTableCompact .shButtonSm {
min-height: 24px;
padding: 0 8px;
font-size: var(--font-size-xs);
}
.shTableCompact .shButtonIcon {
width: 24px;
min-height: 24px;
}
.emptyState {
display: grid;
min-height: 104px;
@@ -726,7 +999,7 @@
background: var(--surface-subtle);
color: var(--text-normal);
font-family: "SFMono-Regular", Consolas, monospace;
font-size: 12px;
font-size: 0.75rem;
}
.modelMeta code,
@@ -750,4 +1023,5 @@
.formDialogBody {
grid-template-columns: 1fr;
}
}