Table columns whose value only ever comes from a small closed set (freshness, wanted, hive) get a <select> in their filter-row cell instead of a free-text input, populated from the distinct values present in the currently-loaded rows plus an "any" option, matched by exact equality instead of substring. Free-text columns (name, the agent's own status message, config PR, hive domain) are unchanged.
84 lines
2 KiB
CSS
84 lines
2 KiB
CSS
/* Scrolls horizontally within its own box on a narrow viewport instead
|
|
of forcing the whole page to overflow — see Table.tsx's comment. */
|
|
.ui-table-scroll {
|
|
overflow-x: auto;
|
|
}
|
|
.ui-table {
|
|
width: 100%;
|
|
border-collapse: collapse;
|
|
}
|
|
.ui-table th {
|
|
text-align: left;
|
|
font-weight: 600;
|
|
color: var(--muted);
|
|
padding: 0.5em 0.75em;
|
|
border-bottom: 1px solid var(--border);
|
|
}
|
|
.ui-table td {
|
|
padding: 0.5em 0.75em;
|
|
border-bottom: 1px solid var(--border);
|
|
}
|
|
.ui-table tr:last-child td {
|
|
border-bottom: none;
|
|
}
|
|
.ui-table-empty {
|
|
color: var(--muted);
|
|
text-align: center;
|
|
padding: 1.25em 0.75em;
|
|
}
|
|
|
|
/* A cell holding free-form prose (an operator- or agent-provided string,
|
|
not a short discrete label) rather than open-ended growth that drags
|
|
the whole table wider — caps the column and wraps within it instead. */
|
|
.ui-table-prose {
|
|
max-width: 32em;
|
|
white-space: normal;
|
|
word-break: break-word;
|
|
}
|
|
|
|
/* Sortable header — the whole header cell is the click target, not a
|
|
separate icon-only button next to it, same "control lives on the
|
|
thing it affects" reasoning as `Badge`'s own click-to-toggle shape. */
|
|
.ui-table-sort-button {
|
|
display: inline-flex;
|
|
align-items: center;
|
|
gap: 0.35em;
|
|
background: none;
|
|
border: none;
|
|
padding: 0;
|
|
margin: 0;
|
|
font: inherit;
|
|
font-weight: 600;
|
|
color: inherit;
|
|
cursor: pointer;
|
|
}
|
|
.ui-table-sort-button:hover {
|
|
color: var(--fg);
|
|
}
|
|
.ui-table-sort-glyph {
|
|
opacity: 0.6;
|
|
font-size: 0.85em;
|
|
}
|
|
.ui-table-sort-button:hover .ui-table-sort-glyph {
|
|
opacity: 1;
|
|
}
|
|
|
|
/* The per-column filter inputs' row — same cell padding as a header row,
|
|
no bottom border of its own (the header row above already has one). */
|
|
.ui-table-filter-row th {
|
|
padding-top: 0;
|
|
padding-bottom: 0.5em;
|
|
font-weight: 400;
|
|
}
|
|
.ui-table-filter-input,
|
|
.ui-table-filter-select {
|
|
width: 100%;
|
|
box-sizing: border-box;
|
|
background: var(--bg);
|
|
color: var(--fg);
|
|
border: 1px solid var(--border);
|
|
border-radius: 4px;
|
|
padding: 0.25em 0.5em;
|
|
font: inherit;
|
|
font-size: 0.9em;
|
|
}
|