feat: improve UI contrast, dark mode, dialog sizing, color coherence, and add table sorting
- Fix dialog scrollability (flex layout + max-h-[90dvh]) and increase L4 dialog to lg width - Add styled enable card to L4 dialog matching proxy host pattern - Unify section colors across proxy host and L4 dialogs (cyan=LB, emerald=DNS, violet=upstream DNS, rose=geo, amber=mTLS) - Improve light mode contrast: muted-foreground oklch 0.552→0.502, remove opacity modifiers on secondary text - Improve dark mode: boost muted-foreground to 0.85, increase border opacity 10%→16%, input 15%→20% - Add bg-card to DataTable wrapper and bg-muted/40 to table headers for surface hierarchy - Add semantic badge variants (success, warning, info, muted) and StatusChip dark mode fix - Add server-side sortable columns to Proxy Hosts and L4 Proxy Hosts (name, upstream, status, protocol, listen) - Add sortKey to DataTable Column type with clickable sort headers (ArrowUp/Down indicators, URL param driven) - Fix E2E test selectors for shadcn UI (label associations, combobox roles, dropdown menus, mobile drawer) - Add htmlFor/id to proxy host form fields and aria-labels to select triggers for accessibility - Add sorting E2E tests for both proxy host pages Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -48,8 +48,8 @@ test.describe.serial('Proxy Routing', () => {
|
||||
test('disabled proxy host stops routing traffic', async ({ page }) => {
|
||||
await page.goto('/proxy-hosts');
|
||||
const row = page.locator('tr', { hasText: 'Functional Proxy Test' });
|
||||
// Toggle the enabled switch (first checkbox inside the row)
|
||||
await row.locator('input[type="checkbox"]').first().click({ force: true });
|
||||
// Toggle the enabled switch (shadcn Switch renders as button with role="switch")
|
||||
await row.getByRole('switch').click();
|
||||
// Give Caddy time to reload config
|
||||
await page.waitForTimeout(3_000);
|
||||
|
||||
@@ -60,7 +60,7 @@ test.describe.serial('Proxy Routing', () => {
|
||||
expect(res.body).not.toContain(ECHO_BODY);
|
||||
|
||||
// Re-enable
|
||||
await row.locator('input[type="checkbox"]').first().click({ force: true });
|
||||
await row.getByRole('switch').click();
|
||||
await page.waitForTimeout(2_000);
|
||||
});
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user