Background
There should be a unified, standard way to present "Onboarding" to a feature to users, and teams shouldn't be required to reinvent this wheel themselves, nor should users be presented with a different onboarding design for each feature they interact with.
The following subcomponents will need to be implemented as part of OnboardingDialog:
Description
A dialog that presents informational content about a feature or any matter in small steps. The dialog should allow the user to navigate steps back and forward. It should provide a clear call to action on the last step. It should also provide a way out for users who don't want to read the content at that particular moment. It should also provide a way for users to indicate they don't want to see that information again.
The specification of which information content could be shown is yet to decide and could be quite open. It's quite common to back information with images to make the overall reading experience more appealing. The text content could be quite arbitrary (see examples in Know use cases — "Add link on-boarding dialog").
User stories
- As a user I want to see on-boarding information to MediaWiki features in an unified way
- As a user I want to be able to navigate back and foward on-boarding information steps of a feature
- As a user I want to be able to indicate that I don't want to see again the on-boarding information of a feature
- As a user I want to be able to skip the on-boarding information of a feature at any time in the steps navigation
- As a user I want to be able to see in which step of the on-boarding process I am (Step counter 1 of 3)
History
Codex dialog provides a starting point to build the described component. Also some of the work in T324708: Dialog: support header and footer customization could be used or extended to allow the needed customization. Some of the challenges in the current design are:
- The dialog height should be the same across all steps, at the moment the Codex's dialog height can grow or shrink based on its content
- There's a bleeding image which is difficult to implement due to the Codex's dialogs content body padding. Also the header background color is matching the image background.
- The main action buttons (and Don't show me again checkbox) are placed in a footer fixed at the dialog's vertical end
Known use cases
- Growth team — GrowthExtensions — Add image on-boarding dialog T329038
- Growth team — GrowthExtensions — Add link on-boarding dialog T329037
Step 1 | Step 2 | Step 3 |
- VisualEditor
- Section Translation
- Suggested tags (MachineVision)
Existing implementations
These artifacts are listed for historical context. The figma spec, linked below, is the source of truth for the new component.
Wikimedia community:
- Design style guide:
- OOUI:
- Vue:
External libraries:
- Add links to any examples from external libraries
Codex implementation
Component task owners
- Designer: @bmartinezcalvo
- Developer: add the main developer's name
Open questions
- Image/Illustration: We will implement an image component’s property and the designer will create an illustration with this format/size and they will export the illustration as an asset so developers can use it as image.
- Scroll behavior for both desktop and mobile (portrait and landscape)
- Stepper placement: it will be placed below the dialog's title (in the same place of the dialog's subtitle)
- Buttons and “Don’t show again” position: Next/Previous buttons will be grouped on the right (as we have in Dialog component) and “Don’t show again" will be always placed on the left. We will do the opposite when RTL.
- "Don't show again" maximum example: as we defined in Dialog's component, "Don't show again" will move above buttons when its text is so long. The footer height will increase.
- Next/Previous icon: they will use cdxIconNext and cdxIconPrevious
- Number of steps: the minimum will be 1 step and the maximum will be free. The close button will vary depending on the number of the steps, and the steppers will be displayed just when more than 1 step.
- Dividers (header and footer): as we defined in Dialog's component, dividers will be visible just when scrolling (this scrolling behavior will be implemented in T332124)
- How to build this pattern in Figma: for now, we will implement the main component as a separate Figma component (not using Dialog component to build the OnboardingDialog pattern) since we want to display just the Onboarding Dialog properties in this Figma component. Also, for designers will be easier to have a separate OnboardingDialog Figma component instead.
Design spec
Anatomy
- Header:
- Onboarding Title
- Close button. "Skip all" when more than 2 steps and icon-only close button when just 1 step. Close button is a customizable property so the user will be able to hide/display the button.
- Stepper: it will be implemented below the dialog's title (in the dialog's subtitle place).
- Image: this image will use a background-color-progressive-subtle so the user will use a PNG illustration where the background will be always the same color. We will implement a max-height for the image:
- Desktop: max-height size-1600 (256px)
- Mobile: max-height size-800 (128px)
- Body content:
- Step title
- Body text
- Complementary text (optional)
- Footer:
- Permanent action ("Don't show again") on the right: it will be implemented as a customizable component's property so it can be displayed in any step, or none.
- Previous/Next buttons: they will be grouped on the right (as we have in the dialog's component) and they will use an icon-only button, except the last step where the "Next" button will be a text button.
Style
Interaction
- States: Onboarding Dialog is just informative so it only uses default state.
- Scroll: It will affect the entire body content including the image (as in Dialog's component) and the header and footer will be fixed displaying a divider when scrolling.
- Swipe: On mobile and tablet, the user will use the gesture swipe to navigate within steps.
Documentation
- Configurable demo with the following properties:
- Title
- Stepper: show/hide the stepper
- Skip button: customizable text
- Step title: customizable text
- Body text: customizable text
- Complementary text: customizable text
- "Don't show again": show/hide it or place it on any of the steps
Acceptance criteria
Minimum viable product
This task covers the minimum viable product (MVP) version of this component. MVP includes basic layout, default states, and most important functionality.
MVP scope
- List all parts of the MVP scope for this component
Design
- Design the Figma spec sheet and add a link to it in this task
- Create the main component in the Figma library. This step will be done by a DST member.
Code
- Implement the component in Codex
Future work
- If applicable, list future work that should be done for this component after the MVP is implemented as part of this task. You should open new, standalone tasks for all future work.