style: unify database block gutters and content alignment
This commit is contained in:
@@ -75,6 +75,18 @@ assoluti. Sulle larghezze ridotte gli stati continuano a disporsi senza sovrappo
|
|||||||
Passati 9 scenari Playwright, con assert geometrici sugli allineamenti richiesti.
|
Passati 9 scenari Playwright, con assert geometrici sugli allineamenti richiesti.
|
||||||
Pubblicazione limitata al frontend Docker del worktree di revisione, nessun merge.
|
Pubblicazione limitata al frontend Docker del worktree di revisione, nessun merge.
|
||||||
|
|
||||||
|
## Follow-up: margini esterni e assi interni (2026-09-13)
|
||||||
|
|
||||||
|
La verifica geometrica iniziale rilevava 20 px di differenza fra il bordo sinistro
|
||||||
|
del riepilogo e quello della tabella. In accordo con Impeccable, introdotti due token:
|
||||||
|
margine esterno condiviso di 20 px e padding interno di 16 px. Catalog summary,
|
||||||
|
navigazione Databases e tabella hanno bordi sinistro/destro coincidenti; riepilogo,
|
||||||
|
Tables, Databases e Workspace databases condividono l'asse testuale a 36 px.
|
||||||
|
Header, toolbar azioni e stati seguono lo stesso asse. Conservato l'allineamento
|
||||||
|
Metadata updated/Description coverage e Operations al punto medio sui layout ampi.
|
||||||
|
Passati 9 scenari Playwright con assert geometrici a 390, 649, 768, 1280 e 1600 px.
|
||||||
|
Nessuna modifica funzionale; aggiornamento Docker limitato al frontend di revisione.
|
||||||
|
|
||||||
## Verifica
|
## Verifica
|
||||||
|
|
||||||
| Verifica | Esito |
|
| Verifica | Esito |
|
||||||
|
|||||||
@@ -155,6 +155,19 @@ for (const width of [390, 649, 768, 1280, 1600]) {
|
|||||||
const operations = await statuses.nth(1).boundingBox();
|
const operations = await statuses.nth(1).boundingBox();
|
||||||
const metadata = await statuses.nth(2).boundingBox();
|
const metadata = await statuses.nth(2).boundingBox();
|
||||||
const summary = await page.locator(".thot-fleet-ledger__kpi-section > h2").boundingBox();
|
const summary = await page.locator(".thot-fleet-ledger__kpi-section > h2").boundingBox();
|
||||||
|
const summaryBlock = await page.locator(".thot-fleet-ledger__kpi-section").boundingBox();
|
||||||
|
const navigationBlock = await page.locator(".thot-fleet-ledger__navigation").boundingBox();
|
||||||
|
const gridBlock = await page.locator(".thot-fleet-ledger__content").boundingBox();
|
||||||
|
const databasesLabel = await page.locator(".thot-fleet-ledger__navigation").getByText("Databases", { exact: true }).boundingBox();
|
||||||
|
const tablesLabel = await page.locator(".thot-fleet-ledger__kpi-label").getByText("Tables", { exact: true }).boundingBox();
|
||||||
|
expect(Math.abs(summaryBlock!.x - gridBlock!.x)).toBeLessThan(1);
|
||||||
|
expect(Math.abs(navigationBlock!.x - gridBlock!.x)).toBeLessThan(1);
|
||||||
|
expect(Math.abs(summary!.x - databasesLabel!.x)).toBeLessThan(1);
|
||||||
|
expect(Math.abs(summary!.x - tablesLabel!.x)).toBeLessThan(1);
|
||||||
|
const gridLabel = await page.locator(".thot-fleet-grid-toolbar").getByText("Workspace databases", { exact: true }).boundingBox();
|
||||||
|
expect(Math.abs(summary!.x - gridLabel!.x)).toBeLessThan(1);
|
||||||
|
expect(Math.abs(summaryBlock!.width - gridBlock!.width)).toBeLessThan(1);
|
||||||
|
expect(Math.abs(navigationBlock!.width - gridBlock!.width)).toBeLessThan(1);
|
||||||
expect(Math.abs(catalog!.x - summary!.x)).toBeLessThan(1);
|
expect(Math.abs(catalog!.x - summary!.x)).toBeLessThan(1);
|
||||||
const workArea = await page.locator(".thot-fleet-ledger__workspace").boundingBox();
|
const workArea = await page.locator(".thot-fleet-ledger__workspace").boundingBox();
|
||||||
if (workArea!.width >= 768) {
|
if (workArea!.width >= 768) {
|
||||||
|
|||||||
@@ -14,7 +14,9 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
.thot-fleet-ledger__workspace {
|
.thot-fleet-ledger__workspace {
|
||||||
--fleet-summary-inset: 1.25rem;
|
--fleet-block-gutter: 1.25rem;
|
||||||
|
--fleet-block-padding: 1rem;
|
||||||
|
--fleet-summary-inset: calc(var(--fleet-block-gutter) + var(--fleet-block-padding));
|
||||||
display: flex;
|
display: flex;
|
||||||
flex: 1;
|
flex: 1;
|
||||||
flex-direction: column;
|
flex-direction: column;
|
||||||
@@ -105,6 +107,11 @@
|
|||||||
padding-inline: var(--fleet-summary-inset);
|
padding-inline: var(--fleet-summary-inset);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.thot-fleet-ledger .thot-administration-header,
|
||||||
|
.thot-fleet-ledger .thot-administration-toolbar {
|
||||||
|
padding-inline: var(--fleet-summary-inset);
|
||||||
|
}
|
||||||
|
|
||||||
.thot-fleet-ledger__header-status > .thot-fleet-ledger__status {
|
.thot-fleet-ledger__header-status > .thot-fleet-ledger__status {
|
||||||
display: block;
|
display: block;
|
||||||
padding: 0;
|
padding: 0;
|
||||||
@@ -221,7 +228,8 @@
|
|||||||
.thot-fleet-ledger__kpi-section {
|
.thot-fleet-ledger__kpi-section {
|
||||||
display: grid;
|
display: grid;
|
||||||
gap: 0.625rem;
|
gap: 0.625rem;
|
||||||
padding: 0.75rem var(--fleet-summary-inset) 0;
|
margin-inline: var(--fleet-block-gutter);
|
||||||
|
padding: 0.75rem var(--fleet-block-padding) 0;
|
||||||
border-bottom: 1px solid oklch(var(--border));
|
border-bottom: 1px solid oklch(var(--border));
|
||||||
background: oklch(var(--card));
|
background: oklch(var(--card));
|
||||||
}
|
}
|
||||||
@@ -272,7 +280,8 @@
|
|||||||
min-height: 3rem;
|
min-height: 3rem;
|
||||||
gap: 0.5rem;
|
gap: 0.5rem;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
padding: 0.5rem 1rem;
|
margin-inline: var(--fleet-block-gutter);
|
||||||
|
padding: 0.5rem var(--fleet-block-padding);
|
||||||
border-bottom: 1px solid oklch(var(--border));
|
border-bottom: 1px solid oklch(var(--border));
|
||||||
background: oklch(var(--card));
|
background: oklch(var(--card));
|
||||||
}
|
}
|
||||||
@@ -456,7 +465,7 @@
|
|||||||
min-width: 0;
|
min-width: 0;
|
||||||
min-height: 18rem;
|
min-height: 18rem;
|
||||||
margin-block-end: 30px;
|
margin-block-end: 30px;
|
||||||
margin-inline-start: 20px;
|
margin-inline: var(--fleet-block-gutter);
|
||||||
overflow: hidden;
|
overflow: hidden;
|
||||||
border-inline-end: 1px solid oklch(var(--border));
|
border-inline-end: 1px solid oklch(var(--border));
|
||||||
background: oklch(var(--card));
|
background: oklch(var(--card));
|
||||||
@@ -616,6 +625,10 @@
|
|||||||
background: oklch(var(--muted) / 0.32);
|
background: oklch(var(--muted) / 0.32);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.thot-fleet-ledger .thot-fleet-grid-toolbar {
|
||||||
|
padding-inline: var(--fleet-block-padding);
|
||||||
|
}
|
||||||
|
|
||||||
@media (min-width: 48rem) {
|
@media (min-width: 48rem) {
|
||||||
.thot-fleet-grid-toolbar > .thot-fleet-action-selector {
|
.thot-fleet-grid-toolbar > .thot-fleet-action-selector {
|
||||||
flex: 0 0 auto;
|
flex: 0 0 auto;
|
||||||
@@ -813,9 +826,6 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
@media (min-width: 64rem) {
|
@media (min-width: 64rem) {
|
||||||
.thot-fleet-ledger__workspace {
|
|
||||||
--fleet-summary-inset: 1.5rem;
|
|
||||||
}
|
|
||||||
.thot-fleet-ledger__header {
|
.thot-fleet-ledger__header {
|
||||||
padding-inline: 1.5rem;
|
padding-inline: 1.5rem;
|
||||||
}
|
}
|
||||||
@@ -826,7 +836,6 @@
|
|||||||
padding-inline: 1.5rem;
|
padding-inline: 1.5rem;
|
||||||
}
|
}
|
||||||
|
|
||||||
.thot-fleet-ledger__navigation,
|
|
||||||
.thot-fleet-ledger__command-bar {
|
.thot-fleet-ledger__command-bar {
|
||||||
padding-inline: 1.25rem;
|
padding-inline: 1.25rem;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user