Files
liqa/client/src/pages/Page.module.css
T
ars9 a5f87b904e feat(scenarios): add detail page, comfortable DescriptionList layout, and environment card refactor
- Add ScenarioDetailPage with DescriptionList, steps table, run/delete actions
- Add /scenarios/:id route
- Add i18n keys for scenario detail fields, steps columns, and 404 error
- Add 'comfortable' and 'inline' layout variants to DescriptionList (with compact as default stacked)
- Apply layout="comfortable" to session, environment, and scenario detail pages
- Apply layout="compact" to EnvironmentsPage card DescriptionList
- Refactor EnvironmentsPage card to use ContextMenu (view/edit/delete) with icons
- Add ScenariosPage clickable rows, Play icon (primary) and Trash2 icon (danger) action buttons
- Add Page.module.css sectionHeading and stepsSection utility classes
- Fix Notification.tsx and Table.tsx formatting (prettier)
2026-04-09 19:16:49 +03:00

255 lines
5.0 KiB
CSS

.heading {
margin: 0 0 var(--space-4);
font-size: var(--font-size-lg);
font-weight: 700;
color: var(--color-text);
}
.sectionHeading {
margin: var(--space-6) 0 var(--space-3);
font-size: var(--font-size-md);
font-weight: 600;
color: var(--color-text);
}
.stepsSection {
margin-top: var(--space-2);
}
.breadcrumbs {
margin-bottom: var(--space-4);
}
.pageToolbar {
display: flex;
align-items: center;
justify-content: space-between;
margin-bottom: var(--space-4);
}
.toolbarActions {
display: flex;
align-items: center;
gap: var(--space-2);
}
.error {
margin-bottom: var(--space-4);
padding: var(--space-3) var(--space-4);
background: var(--color-error-bg);
color: var(--color-error-fg);
border-radius: var(--radius-md);
font-size: var(--font-size-sm);
}
.muted {
color: var(--color-text-muted);
font-size: var(--font-size-sm);
}
.codeInline {
font-family: var(--font-mono, ui-monospace, monospace);
font-size: 0.85em;
padding: 0.15em 0.45em;
background: var(--color-code-bg, color-mix(in srgb, var(--color-bg-raised) 60%, var(--color-secondary) 40%));
border: 1px solid var(--color-border);
border-radius: var(--radius-sm);
color: var(--color-secondary-fg);
word-break: break-all;
}
/* ── Environment cards ──────────────────────────────────────── */
.envGrid {
display: grid;
grid-template-columns: repeat(auto-fill, minmax(280px, 1fr));
gap: var(--space-4);
}
.envCard {
display: flex;
flex-direction: column;
gap: var(--space-3);
}
.envCardAdd {
display: flex;
align-items: center;
justify-content: center;
min-height: 120px;
border: 2px dashed var(--color-border);
border-radius: var(--radius-lg);
transition: border-color var(--transition), background var(--transition);
}
.envCardAdd:hover {
border-color: var(--color-primary);
background: color-mix(in srgb, var(--color-primary) 6%, transparent);
}
.envCardHeader {
display: flex;
align-items: center;
gap: var(--space-2);
flex-wrap: wrap;
}
.envCardId {
font-size: var(--font-size-xs);
font-weight: 700;
color: var(--color-text-muted);
flex-shrink: 0;
border: var(--border-width) solid var(--color-border);
border-radius: 9999px;
padding: 1px var(--space-2);
line-height: 1.6;
}
.envCardFooter {
display: flex;
align-items: center;
justify-content: space-between;
width: 100%;
}
.envCardHeader button {
color: inherit;
padding: var(--space-1);
aspect-ratio: 1;
margin-right: calc(-1 * var(--space-1));
}
.envCardHeader button:hover {
background: color-mix(in srgb, currentColor 15%, transparent) !important;
}
.envCardName {
font-weight: 700;
font-size: var(--font-size-sm);
flex: 1;
}
.envCardUrls {
margin: 0;
display: flex;
flex-direction: column;
gap: var(--space-1);
}
.envCardUrlRow {
display: flex;
gap: var(--space-2);
align-items: baseline;
font-size: var(--font-size-xs);
}
.envCardUrlKey {
color: var(--color-text-muted);
white-space: nowrap;
flex-shrink: 0;
font-weight: 600;
text-transform: uppercase;
letter-spacing: 0.04em;
}
.envCardUrlVal {
margin: 0;
color: var(--color-text);
word-break: break-all;
}
.envCardEmpty {
margin: 0;
font-size: var(--font-size-xs);
color: var(--color-text-muted);
}
/* ── Environment form ───────────────────────────────────────────────────── */
.formCard {
max-width: 540px;
}
.formFields {
display: flex;
flex-direction: column;
gap: var(--space-4);
margin-bottom: var(--space-6);
}
.formActions {
display: flex;
gap: var(--space-3);
justify-content: flex-end;
}
/* ── Environment detail page ────────────────────────────────────────────── */
.detailToolbar {
margin-bottom: var(--space-4);
}
.detailHeader {
display: flex;
align-items: center;
gap: var(--space-4);
margin-bottom: var(--space-4);
}
.detailHeader .heading {
margin: 0;
flex: 1;
}
.detailMeta {
display: grid;
grid-template-columns: max-content 1fr;
gap: var(--space-1) var(--space-4);
margin-bottom: var(--space-6);
font-size: var(--font-size-sm);
}
.metaLabel {
color: var(--color-text-muted);
font-weight: 600;
text-transform: uppercase;
font-size: var(--font-size-xs);
letter-spacing: 0.04em;
align-self: center;
}
.sectionHeading {
margin: 0 0 var(--space-3);
font-size: var(--font-size-md);
font-weight: 700;
}
.envDetailUrls {
margin: 0;
display: flex;
flex-direction: column;
gap: var(--space-2);
}
.envDetailUrlRow {
display: grid;
grid-template-columns: 140px 1fr;
gap: var(--space-2);
align-items: baseline;
font-size: var(--font-size-sm);
}
.envDetailUrlVal {
margin: 0;
word-break: break-all;
}
.envDetailUrlVal a {
color: var(--color-text-muted);
text-decoration: none;
}
.envDetailUrlVal a:hover {
text-decoration: underline;
}