# Epic DREAM-14 - Introduce a standardized component for PageHeaders & SubHeaders 

Project: Stream Design System
Status: closed
URL: https://community.openproject.org/work_packages/DREAM-14

## Detailed specification

### Motivation and background information

### Acceptance criteria

### Out of scope

| Attribute | Value |
| --- | --- |
| Mockups |  |

## Planning

| Attribute | Value |
| --- | --- |
| Roadmap |  |
| Date |  |
| Votes |  |
| List |  |
| Target versions | 14.5.0 |
| Sprint |  |
| Backlog bucket |  |
| Relevance |  |

## Subitems

| ID | Type | Subject | Status | Assignee | Target versions | Project | Priority | Spent time |
| --- | --- | --- | --- | --- | --- | --- | --- | --- |
| DREAM-16 | Feature | Update the PageHeader component to do all required actions | closed |  | 14.0.0 | Stream Design System | Medium |  |
| DREAM-20 | Implementation | Update existing PageHeader occurences in code and implement breadcrumbs | closed |  | 14.0.0 | Stream Design System | Medium |  |
| DREAM-18 | Implementation | Update PageHeaders in Meetings module | closed |  | 14.1.0 | Stream Design System | Medium |  |
| DREAM-19 | Implementation | Include the sub-headers in pages where the PageHeader is already used | closed |  | 14.2.0 | Stream Design System | Medium |  |
| DREAM-34 | Feature | Create a sub-header component in Primer | closed |  | 14.2.0 | Stream Design System | Medium |  |
| DREAM-31 | Implementation | Edit state for Primer::OpenProject:PageHeader | closed |  | 14.5.0 | Stream Design System | Medium |  |

## Bugs and other work packages

| ID | Type | Subject | Status | Assignee | Target versions | Module |
| --- | --- | --- | --- | --- | --- | --- |
| DREAM-30 | Documentation | Document how to use the PageHeader component | closed |  | 14.0.0 |  |
| DREAM-44 | Documentation | Document the SubHeader component in the lookbook | closed |  | 14.2.0 |  |

## Details

| Attribute | Value |
| --- | --- |
| Module |  |
| Enterprise plan |  |
| Labels |  |

## People

| Attribute | Value |
| --- | --- |
| Assignee |  |
| Accountable | Henriette Darge |
| Product manager |  |
| Designer | Marc Alcobé |
| Developers | OP Dev Dream Team |
| Requested by |  |
| Interest by |  |

## Estimates and progress

| Attribute | Value |
| --- | --- |
| Work |  |

## Description

# User Problem

## Problem

**PageHeader**

  - Currently there are multiple implementations of PageHeaders due to the introduction of Primer as Design System.

  - There is a lack of how we expect the different types of Headers in the application to behave and look.

  - The PageHeaders components have been analyses individually per page where Primer has been introduced but not as a global for the app.

**SubHeader**

  - There are no sub-headers that improve the usability of the application and helps the users to perform the most important actions related to the content of the screen.

  - The sub-headers are components that affect all the pages in the application and need to be considered and designed with that in mind, not individually per page. With that said each feature of the application might require variations of this component to accommodate the most relevant actions.

# Business Case

## Solution

**PageHeader**

  - There is a standaradized component for PageHeaders which is planned to be used in **all** pages of the application. The component contains "View or query" related actions (eg. Favourite, share, change between view types...) in a Primer style.

  - The header will always be the default size, not the large one (need adapt Meetings pages to this rule). The PageHeader title will always become the H1 tag of the page.

  - Remove all back buttons (the user can use the browser back button or the breadcrumbs instead).

  - In mobile the divider will not disappear (opposed to the current implementation) and the PageHeader will contain a maximum of 1 action. If there is multiple actions this action will be a three dots horizontal more menu.

  - For all the pages that can be saved or saved as the designed behaviour of a message to save the view will automatically appear when the view is modified (see designs and Project Lists for reference).

  - This harmonisation is linked and dependant on the harmonisation of page SubHeaders.

  - Include this decisions to our Lookbook documentation.

  - For rules of the content (e.g the breadcrumb or which buttons to include into the PageHeader), please have a look at <mention class="mention" data-id="57025" data-type="work_package" data-text="#57025">#57025</mention>

**SubHeader**

  - There is a standaradized component for PageHeaders which is planned to be used in **some** pages of the application. The component will contain the most relevant actions of the page in a Primer style. 

  - SubHeaders might change in the same page context if there is actions that are depending on the selection of the content (eg. multi select of work packages...)

  - For rules of the content (e.g the breadcrumb or which buttons to include into the PageHeader), please have a look at <mention class="mention" data-id="57025" data-type="work_package" data-text="#57025">#57025</mention>

## Next iteration

  - Multiple iterations to modify all headers in the application, see <mention class="mention" data-id="57025" data-type="work_package" data-text="##57025">##57025</mention>

# Table of pages that already use the new components

<figure class="table op-uc-figure_align-center op-uc-figure"><table class="op-uc-table">
<thead class="op-uc-table--head"><tr class="op-uc-table--row">
<th class="op-uc-table--cell op-uc-table--cell_head" style="background-color:hsl(0, 0%, 90%);"><p class="op-uc-p"><br data-cke-filler="true"></p></th>
<th class="op-uc-table--cell op-uc-table--cell_head" style="background-color:hsl(0, 0%, 90%);"><p class="op-uc-p"><strong>PAGE</strong></p></th>
<th class="op-uc-table--cell op-uc-table--cell_head" style="background-color:hsl(0, 0%, 90%);"><p class="op-uc-p"><strong>WORK PACKAGE</strong></p></th>
<th class="op-uc-table--cell op-uc-table--cell_head" style="background-color:hsl(0, 0%, 90%);"><p class="op-uc-p">VERSION</p></th>
<th class="op-uc-table--cell op-uc-table--cell_head" style="background-color:hsl(0, 0%, 90%);"><p class="op-uc-p"><strong>NOTES</strong></p></th>
</tr></thead>
<tbody>
<tr class="op-uc-table--row">
<td class="op-uc-table--cell"><ul class="todo-list op-uc-list_task-list op-uc-list"><li class="op-uc-list--item"><label class="todo-list__label"><input type="checkbox" checked disabled><span class="todo-list__label__description  op-uc-p"></span></label></li></ul></td>
<td class="op-uc-table--cell"><p class="op-uc-p">Project list</p></td>
<td class="op-uc-table--cell"><p class="op-uc-p"><mention class="mention" data-id="52746" data-type="work_package" data-text="###52746">###52746</mention></p></td>
<td class="op-uc-table--cell"><p class="op-uc-p">14.0.0</p></td>
<td class="op-uc-table--cell"><p class="op-uc-p">Will be the first page to use the complete component implemented in <mention class="mention" data-id="52582" data-type="work_package" data-text="#52582"><mention class="mention" data-id="52582" data-type="work_package" data-text="#52582">#52582</mention></mention>.</p></td>
</tr>
<tr class="op-uc-table--row">
<td class="op-uc-table--cell"><ul class="todo-list op-uc-list_task-list op-uc-list"><li class="op-uc-list--item"><label class="todo-list__label"><input type="checkbox" checked disabled><span class="todo-list__label__description  op-uc-p"></span></label></li></ul></td>
<td class="op-uc-table--cell"><p class="op-uc-p">Project members</p></td>
<td class="op-uc-table--cell"><p class="op-uc-p"><mention class="mention" data-id="52746" data-type="work_package" data-text="###52746">###52746</mention></p></td>
<td class="op-uc-table--cell"><p class="op-uc-p">14.0.0</p></td>
<td class="op-uc-table--cell"><p class="op-uc-p"></p></td>
</tr>
<tr class="op-uc-table--row">
<td class="op-uc-table--cell"><ul class="todo-list op-uc-list_task-list op-uc-list"><li class="op-uc-list--item"><label class="todo-list__label"><input type="checkbox" checked disabled><span class="todo-list__label__description  op-uc-p"></span></label></li></ul></td>
<td class="op-uc-table--cell"><p class="op-uc-p">Meetings</p></td>
<td class="op-uc-table--cell"><p class="op-uc-p"><mention class="mention" data-id="52584" data-type="work_package" data-text="###52584">###52584</mention></p></td>
<td class="op-uc-table--cell"><p class="op-uc-p">14.1.0</p></td>
<td class="op-uc-table--cell"><p class="op-uc-p">Currently is an independent component that needs to be substituted.</p></td>
</tr>
<tr class="op-uc-table--row">
<td class="op-uc-table--cell"><ul class="todo-list op-uc-list_task-list op-uc-list"><li class="op-uc-list--item"><label class="todo-list__label"><input type="checkbox" checked disabled><span class="todo-list__label__description  op-uc-p"></span></label></li></ul></td>
<td class="op-uc-table--cell"><p class="op-uc-p">File Storages</p></td>
<td class="op-uc-table--cell"><p class="op-uc-p"><mention class="mention" data-id="52746" data-type="work_package" data-text="###52746">###52746</mention></p></td>
<td class="op-uc-table--cell"><p class="op-uc-p">14.0.0</p></td>
<td class="op-uc-table--cell"><p class="op-uc-p">UI is correct but breadcrumb not included in the component</p></td>
</tr>
<tr class="op-uc-table--row">
<td class="op-uc-table--cell"><ul class="todo-list op-uc-list_task-list op-uc-list"><li class="op-uc-list--item"><label class="todo-list__label"><input type="checkbox" checked disabled><span class="todo-list__label__description  op-uc-p"></span></label></li></ul></td>
<td class="op-uc-table--cell"><p class="op-uc-p">Some administration pages</p></td>
<td class="op-uc-table--cell"><p class="op-uc-p"><mention class="mention" data-id="53808" data-type="work_package" data-text="###53808">###53808</mention></p></td>
<td class="op-uc-table--cell"><p class="op-uc-p"></p></td>
<td class="op-uc-table--cell"><p class="op-uc-p">The administration is not done yet, but was substituted partially when we touched these pages in the past</p></td>
</tr>
<tr class="op-uc-table--row">
<td class="op-uc-table--cell"><ul class="todo-list op-uc-list_task-list op-uc-list"><li class="op-uc-list--item"><label class="todo-list__label"><input type="checkbox" checked disabled><span class="todo-list__label__description  op-uc-p"></span></label></li></ul></td>
<td class="op-uc-table--cell"><p class="op-uc-p">Notification centre</p></td>
<td class="op-uc-table--cell"><p class="op-uc-p"><mention class="mention" data-id="55632" data-type="work_package" data-text="###55632">###55632</mention></p></td>
<td class="op-uc-table--cell"><p class="op-uc-p">14.5.0</p></td>
<td class="op-uc-table--cell"><p class="op-uc-p"></p></td>
</tr>
</tbody>
</table></figure>

# Visuals and Figma

**PageHeader**

<https://www.figma.com/file/UeRGKwv1lSKDpribyWROe3/Page-Headers-concept?type=design&node-id=0-1&mode=design>

**SubHeader**

<https://www.figma.com/file/tUkyiLDn5ax7Q9DAhxlS69/Sub-headers-concept?type=design&amp;node-id=0-1&amp;mode=design>
