Patterns
Didactika theme v0.1A detail page
Look at one thing in depth: its header, its sections as tabs, its facts and its history.
The detail page is where a row of a list leads: one course, one user, one rule. It says what the thing is, gives its facts and its history, and offers what can be done to it.
When to use it
- An object with enough information that it does not fit in a row or a dialog.
- If the object only has three attributes, a dialog with a description list is enough.
Anatomy
- Page header: breadcrumb, a tile with the type of object, the name, one line of context with its status as a badge, and the actions (the main one filled, the rest outline or icons).
- Tabs (
nav-tabs) for the sections of the object (Summary, Participants, Grades, Settings), with a count in a badge where it helps. The first tab is the summary. - Summary: cards in a grid. Details as a description list (
dd-dl); Activity as a timeline (dd-timeline); other cards as needed (figures, progress). - Related things as a table or list inside their own tab, with the same pattern as any list.
A detail page
Algebra I
Mathematics · Open
Details
- Teacher
- Ana Ruiz
- Students
- 128 enrolled · 74% completed
- Dates
- 12 September to 30 June
- Course ID
- ALG-1-2026
Activity
- Grades published
- Quiz "Unit 3" closed
- Course created
This Moodle version has no dark mode: examples stay light.
Layout and spacing
| Between | Distance |
|---|---|
| Header and tabs | 1.25 rem |
| Tabs and content | 1.25 rem |
| Cards | 1 rem; two columns when each has at least 18 rem |
Behaviour
- The tab is in the address, so a link opens the section and Back works.
- Tabs switch without reloading the header; the count in a badge updates when the content changes.
- The status is edited where it is shown (a menu on the badge) only if changing it is a common, safe action; otherwise it is in Settings.
- Editing opens a form page or a dialog and returns to the same tab afterwards.
- The timeline shows the last events (five) with “See all” leading to the full history.
States
| State | What the user sees |
|---|---|
| Loading | The header already shows the name (it came with the link); the cards show skeletons |
| Not found | An empty state: “This course does not exist or was deleted”, with the way back to the list |
| No permission | An empty state that names who can see it |
| Archived or closed | A note under the header that says so, and the actions that no longer apply disabled with their reason |
Narrow screens
The header’s actions go under the title; tabs scroll sideways in one row; cards stack.
Accessibility
- The name is the
h1; the sections of the cards areh2. - Tabs follow the pattern of tabs (arrow keys between them, the panel after them).
- The breadcrumb ends in the current page with
aria-current="page".
Before shipping
- The name, the type and the status are visible without scrolling.
- The tab is in the address.
- Not found and no permission have their screens.
- Every action that no longer applies says why.
UI