diff --git a/frontend/src/components/Layout.tsx b/frontend/src/components/Layout.tsx index 3330ac1..a193908 100644 --- a/frontend/src/components/Layout.tsx +++ b/frontend/src/components/Layout.tsx @@ -59,8 +59,8 @@ export function Layout(): JSX.Element { - {/* nav-bar-top — canvas with hairline */} -
+ {/* nav-bar-top — paper gives dark-mode lift vs canvas body */} +
diff --git a/frontend/src/pages/EngagementsListPage.tsx b/frontend/src/pages/EngagementsListPage.tsx index 4164895..0c3fdb4 100644 --- a/frontend/src/pages/EngagementsListPage.tsx +++ b/frontend/src/pages/EngagementsListPage.tsx @@ -1,4 +1,5 @@ import { Link } from 'react-router-dom'; +import { Plus } from 'lucide-react'; import { extractApiError } from '@/api/client'; import type { Engagement } from '@/api/types'; import { useDeleteEngagement, useEngagementsList } from '@/hooks/useEngagements'; @@ -41,7 +42,7 @@ export function EngagementsListPage(): JSX.Element {
{canEditEngagements ? ( - + New + New ) : null}
@@ -59,7 +60,7 @@ export function EngagementsListPage(): JSX.Element { action={ canEditEngagements ? ( - + New engagement + New engagement ) : undefined } diff --git a/frontend/src/pages/UsersAdminPage.tsx b/frontend/src/pages/UsersAdminPage.tsx index 4a1a750..d4a43df 100644 --- a/frontend/src/pages/UsersAdminPage.tsx +++ b/frontend/src/pages/UsersAdminPage.tsx @@ -111,43 +111,56 @@ export function UsersAdminPage(): JSX.Element {

Create account

{/* - items-start so each cell top-aligns; the button is wrapped in a flex column - that pushes it to align with the input row (label + 4px gap = ~22px offset). + Option A structural fix (AC-17.3): labels / inputs / hints in 3 explicit grid rows + so the browser can never misalign them by collapsing different-height cells. + grid-rows-[auto_auto_auto] ensures row 1 = labels, row 2 = inputs, row 3 = hints. */} -
- - setCreateForm({ ...createForm, username: e.target.value })} - required - /> - - - setCreateForm({ ...createForm, password: e.target.value })} - required - minLength={8} - /> - - - setCreateForm({ ...createForm, role: e.target.value as Role })} + options={ROLE_OPTIONS} + /> + + + {/* Row 3 — hints */} +