feat(ui): implement full UI layer for all modules

Add interactive island components and server partials for notes,
students, and admin modules, following the Figma prototype design.

- static/styles/ui.css: shared component library (buttons, tables,
  chips, cards, filters, tabs, form inputs)
- notes: NotesView (student grade view with UE cards, promo tabs,
  weighted averages), AdminConsultNotes, AdminUEs islands + partials
- students: ConsultStudents (list/filter/delete), AdminPromotions
  (CRUD) islands + partials
- admin: AdminModules, AdminUsers, AdminRoles islands + partials
- All partials use State type with unknown cast for session access

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-04-26 22:54:10 +02:00
parent 34b7ac0231
commit 5ba8b8cb68
25 changed files with 2059 additions and 77 deletions
+10 -7
View File
@@ -18,8 +18,8 @@ role-based administration.
### Current Status
🚧 **In Progress** - API layer largely complete, UI pages not yet built.
The schema below is the **final/definitive schema** that guides all development.
🚧 **In Progress** - API layer largely complete, UI pages not yet built. The
schema below is the **final/definitive schema** that guides all development.
---
@@ -135,9 +135,9 @@ erDiagram
### Current Schema
The Drizzle ORM schema in `/databases/schema.ts` implements all tables:
`roles`, `permissions`, `rolePermissions`, `users`, `promotions`, `students`,
`modules`, `enseignements`, `ues`, `ueModules`, `notes`, `ajustements`, `mobility`.
The Drizzle ORM schema in `/databases/schema.ts` implements all tables: `roles`,
`permissions`, `rolePermissions`, `users`, `promotions`, `students`, `modules`,
`enseignements`, `ues`, `ueModules`, `notes`, `ajustements`, `mobility`.
---
@@ -303,7 +303,9 @@ deno task check
- **E2E** (`tests/e2e/`) — Fresh handler + real DB (handler-level, not browser)
Helpers in `tests/helpers/`:
- `handler.ts` — builds fake Fresh contexts (`makeEmployeeContext`, `makeJsonRequest`…)
- `handler.ts` — builds fake Fresh contexts (`makeEmployeeContext`,
`makeJsonRequest`…)
- `db_integration.ts` — seed functions + `truncateAll()` for test isolation
- `db_mock.ts` / `api_mock.ts` — in-memory mocks for unit tests
@@ -339,7 +341,8 @@ nix run nixpkgs#act -- -j integration --no-cache-server # integration + e2e via
## 💡 Important Notes
1. **Only missing API**: `POST /notes/import-xlsx` (#44) — all other endpoints are implemented.
1. **Only missing API**: `POST /notes/import-xlsx` (#44) — all other endpoints
are implemented.
2. **Next priority**: UI pages (none built yet) — follow the Figma prototype.
3. **Module Pattern**: Each module should follow the same pattern: routes, API
endpoints, components, and tests.