feat(client): add ContextMenu component, environment cards, detail page, and breadcrumbs

- add ContextMenu component with click-outside/Escape dismiss, align prop, and danger variant
- replace EnvironmentsPage table with responsive card grid
- add cog button to each card opening a context menu with view and delete actions
- add EnvironmentDetailPage at /environments/:id with meta grid, URLs card, and delete
- add Breadcrumbs to all pages; detail page uses two-item trail with delete button inline
- add Table stories for pagination and Timestamp column
This commit is contained in:
2026-04-09 10:55:45 +03:00
parent 077cd6ad5f
commit 35997f8bcb
13 changed files with 556 additions and 42 deletions
+21 -3
View File
@@ -22,9 +22,27 @@ interface User {
const daysAgo = (n: number) => new Date(Date.now() - n * 86_400_000).toISOString();
const users: User[] = [
{ id: 1, name: 'Alice Müller', email: 'alice@example.com', status: 'active', updatedAt: daysAgo(1) },
{ id: 2, name: 'Bob Nguyen', email: 'bob@example.com', status: 'inactive', updatedAt: daysAgo(5) },
{ id: 3, name: 'Carol Santos', email: 'carol@example.com', status: 'active', updatedAt: daysAgo(30) },
{
id: 1,
name: 'Alice Müller',
email: 'alice@example.com',
status: 'active',
updatedAt: daysAgo(1),
},
{
id: 2,
name: 'Bob Nguyen',
email: 'bob@example.com',
status: 'inactive',
updatedAt: daysAgo(5),
},
{
id: 3,
name: 'Carol Santos',
email: 'carol@example.com',
status: 'active',
updatedAt: daysAgo(30),
},
];
const manyUsers: User[] = Array.from({ length: 47 }, (_, i) => ({