feat(web): responsive Fields page (stacks on narrow) (#58)

This commit is contained in:
2026-06-09 15:18:39 +02:00
parent b83149e0bb
commit 7f9cf9fe60
2 changed files with 19 additions and 2 deletions
+17
View File
@@ -0,0 +1,17 @@
import { expect, test } from "vitest";
import { screen } from "@testing-library/react";
import { renderApp } from "../test/render";
import { FieldsPage } from "./fields-page";
test("renders the field list and form in a responsive grid", async () => {
const { container } = renderApp(<FieldsPage />);
// both panes are present (master list + detail form)
expect(await screen.findByText(/fields/i)).toBeInTheDocument();
// responsive: single-column by default, two-column at lg
const grid = container.querySelector("div.grid");
expect(grid?.className).toContain("grid-cols-1");
expect(grid?.className).toContain("lg:grid-cols-[20rem_1fr]");
});
+2 -2
View File
@@ -20,8 +20,8 @@ export function FieldsPage() {
return (
<div className="flex h-full flex-col">
<PageTitle className="px-4 pt-4 pb-2">{t("fields.title")}</PageTitle>
<div className="grid flex-1 grid-cols-[20rem_1fr] overflow-hidden">
<div className="overflow-hidden border-r">
<div className="grid flex-1 grid-cols-1 overflow-auto lg:grid-cols-[20rem_1fr] lg:overflow-hidden">
<div className="overflow-hidden border-b lg:border-r lg:border-b-0">
<FieldList selectedKey={selected?.key ?? null} onSelect={setSelected} />
</div>
<div className="overflow-hidden">