[docs] Initial skeleton for the UX Style Guide.

This CL adds an initial skeleton for the UX Style Guide and also
merges the

1. go/chrome-devtools/ux-writing and
2. go/chrome-devtools/ui-glossary

documentation sets into this already, as well as moving and slightly
adjusting the Material 3 styling documentation.

Bug: 354102605
Change-Id: Ida1e5e47038fac421e665eac9785bdc1fe04d6de
Reviewed-on: https://chromium-review.googlesource.com/c/devtools/devtools-frontend/+/5725533
Commit-Queue: Kim-Anh Tran <kimanh@chromium.org>
Commit-Queue: Benedikt Meurer <bmeurer@chromium.org>
Reviewed-by: Kim-Anh Tran <kimanh@chromium.org>
Auto-Submit: Benedikt Meurer <bmeurer@chromium.org>
This commit is contained in:
Benedikt Meurer
2024-07-23 07:23:15 +00:00
committed by Devtools-frontend LUCI CQ
parent e41cef5981
commit 625c4bcd65
9 changed files with 299 additions and 17 deletions
+6 -1
View File
@@ -16,16 +16,18 @@ below.**
## Document Index
### Design Documents
* See the shared [Design Documents](https://drive.google.com/drive/folders/1JbUthATfybvMQR3yAHC4J0P7n6oftYNq) folder in the Chromium drive.
### General Development
* [Get the Code](get_the_code.md)
* [UX Style Guide](./styleguide/ux/README.md)
* [Contributing Changes](contributing_changes.md)
* [Chrome DevTools Design Review Guidelines](design_guidelines.md)
* [Release Management](release_management.md)
* [Dependencies](dependencies.md)
* [Localization](l10n.md)
* [Material 3 in DevTools](material3_guidelines.md)
* [V8 debugger support checklist for new language features](https://goo.gle/v8-checklist)
* [Chrome DevTools Protocol](devtools-protocol.md)
* [Visual logging in DevTools](visual_logging.md)
@@ -34,15 +36,18 @@ below.**
* [How to add experiments in DevTools frontend](add_experiments.md)
### Testing
* [Testing Chromium DevTools](testing.md)
* [E2E test guide](../test/e2e/README.md)
* [Unit test guide](unit_testing.md)
### Architectural Documentation
* [Architecture of DevTools](architecture_of_devtools.md)
* [Resource management in DevTools](resource_management.md)
### Chromium
* [Chromium Docs](https://chromium.googlesource.com/chromium/src/+/master/docs/README.md)
* [V8 Documention](https://v8.dev/docs)
+13
View File
@@ -0,0 +1,13 @@
# Chromium DevTools UX Style Guide
These guidelines cover the best practices for extending Chromium DevTools'
user interface.
## Table of contents
1. [How to organize UI](organizing.md)
1. [How to style UI](styling.md)
1. [How to write UI text](writing.md)
1. [Glossary](glossary.md)
Back to the [Chromium DevTools Documentation](../../README.md).
+130
View File
@@ -0,0 +1,130 @@
# Glossary
To stop mixing terms for UI elements across DevTools UI, its docs, and code, familiarize yourself with the terms in this glossary.
[TOC]
## Panel
A top-level tab in the DevTools window, including tabs from the **Drawer**
because you can [move them to the top](https://developer.chrome.com/docs/devtools/customize#reorder).
In other words, a panel is a fairly complex arrangement of information and
control elements put together on the basis of common sense.
![Panels in the main DevTools UI](./images/glossary-panels.png)
Despite the fact that it's also a tab, the term "panel" has been in use for
ages and all users are familiar with it. At the time of writing, DevTools
has 32 panels.
*** aside
Example: **Elements**, **Console**, **Network**, and **Sources** panels.
***
## Tab
*Inside a panel*, one of the labeled "bookmarks" in a set. Opens a single
respective "page" (view) when you "pull" it.
![Explanatory picture for labeled bookmarks](./images/glossary-labeled-bookmarks.jpg)
In other words, a single-select switch between several distinct UI parts.
Can be arranged:
- Horizontally, like **Styles** ... **Properties** in **Elements**
- Vertically, like **Preferences** ... **Shortcuts** in **Settings**
*** aside
Examples: **Styles**, **Computed**, and **Properties** tabs inside the
**Elements** panel, or **Page**, **Workspace**, and **Snippets** tabs
inside the sidebar of the **Sources** panel.
***
## Section
A set of UI elements inside a panel and/or tab that is put together on the
basis of common sense. Use this term when other terms don't seem to apply.
*** aside
Example: **Watch**, **Breakpoints**, and other sections in the **Sources** >
**Debugger** sidebar.
***
## Datagrid, table
A spreadsheet-like tabular view of data with rows and columns.
*** aside
Example: The request table in the **Network** panel.
***
## Dialog [window]
A fairly small window that pops up over DevTools, communicates information,
and prompts for a response.
*** aside
Example: **Do you trust this code?** dialog in **Sources** > **Editor**.
***
## Sidebar
A set of UI elements, typically to the right or left side of a panel.
Sometimes can be closed or collapsed. Spelled without a space between
"side" and "bar".
*** aside
Example: **Navigator** and **Debugger** sidebars in **Sources**.
***
## Action bar
A bar with control elements, such as buttons, filters, checkboxes, and menus.
Typically located at the top.
*** aside
Example: Action bar at the top of the **Console**.
***
## Status bar
A bar with information and statistics, non-actionable. Typically located at
the bottom.
*** aside
Example: Status bar at the bottom of the **Network** panel.
***
## Navigation tree
A hierarchical tree-like structure that can have multiple levels of nesting.
*** aside
Example: File tree in the **Sources** > **Page** tab.
***
## Drop-down menu
A list of options that appears when you click the menu element.
Can have multi-select.
*** aside
Example: **Network** > **Throttling**.
***
## Context menu
A context-sensitive list of actions shown when you right-click an element.
## Tooltip
A small pop-up window with additional information that appears on hover.
Can have rich formatting.
## Controls
Graphical control elements, such as buttons, radio buttons, checkboxes, toggle
switches, sliders, scroll bars, text boxes, links, and others.
## Pane [DEPRECATED]
Deprecated. A duplicative and confusing term. Don't use.
Binary file not shown.

After

Width:  |  Height:  |  Size: 185 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 85 KiB

+6
View File
@@ -0,0 +1,6 @@
# Chromium DevTools UX Style Guide
[logo]: https://github.com/ChromeDevTools/devtools-logo/raw/master/logos/png/devtools-circle-48.png
[home]: README.md
* [Chromium DevTools UX Style Guide][home]
+9
View File
@@ -0,0 +1,9 @@
# How to organize UI
[TOC]
## Panels and tabs
## Widgets and views
## Actions
@@ -1,8 +1,8 @@
# Material 3 for DevTools
# How to style UI
## Colors
[TOC]
### Backgrounds
## Background colors
All backgrounds should be either a surface or a container
- default toolbar color: `--sys-color-cdt-base-container`
@@ -16,12 +16,18 @@ All backgrounds should be either a surface or a container
States:
- hovered: `--sys-color-state-hover-on-subtle` (see Troubleshooting > 1 for details)
- hovered: `--sys-color-state-hover-on-subtle`
- selected: `--sys-color-tonal-container`
- focus-visible: `--sys-color-state-focus-highlight`
- text selection over focus: `--sys-color-state-focus-select`
### Text
*** aside
**NOTE:** For hover/focus colors for elements which background color is other than `--sys-color-cdt-base-container`
or in case you need an opaque hover color use [state layer technique](https://carbon.googleplex.com/google-material-3/pages/interaction-states/state-layers).
See [example CL](http://crrev.com/c/5003859)
***
## Text colors
Text should generally use on-surface, on-container
- regular (old text-primary): `--sys-color-on-surface`
@@ -33,11 +39,11 @@ For warnings, errors, text on selected/focused UI elements:
- `--sys-color-on-surface-error`
- `--sys-color-on-tonal-container`
### Syntax highlighting
## Syntax highlighting
Syntax highlighting should use token-something colors defined [here](crsrc.org/c/third_party/devtools-frontend/src/front_end/ui/legacy/themeColors.css;l=355)
Syntax highlighting should use token-something colors defined [here](http://crsrc.org/c/third_party/devtools-frontend/src/front_end/ui/legacy/themeColors.css;l=355)
### Icons
## Icon colors
Regular (dark grey) icons should also use on-something colors
- default: `--sys-color-on-surface-subtle`
@@ -47,13 +53,6 @@ Regular (dark grey) icons should also use on-something colors
For colored icons, please use icon application color tokens
In case you need to add a new icon application color token, reference `--sys-color-something-bright`
### Other elements
## Other elements
In case you can’t reuse a component and need to add some new UI element, please follow the [spec](https://www.figma.com/file/5xWeeSmVQTd4yW3s6aFJ1f/CDDS-UX%2FEng-Spec-(NO-LONGER-UPDATED)?node-id=35%3A2599&mode=dev)
### Troubleshooting
1. For hover/focus colors for elements which background color is other than `--sys-color-cdt-base-container`
or in case you need an opaque hover color use [state layer technique](https://carbon.googleplex.com/google-material-3/pages/interaction-states/state-layers).
See [example CL](crrev.com/c/5003859)
+120
View File
@@ -0,0 +1,120 @@
# How to write UI text
[TOC]
## Checklist
For every CL that adds or changes UI texts in the Chrome DevTools front-end, use
this checklist to make sure that the new or changed strings meet the basic
requirements for good UX writing.
### General
* Give the right info at the right time and place
* Don't write more than 1 sentence but if you do, break up text into sections, lists, tooltips, and <u>Learn more</u> links
* Be friendly but not ridiculous
* DO: `This API lets you collect data about what your users like.`
* DON'T: `Dude! This API is totally awesome!`
* DON'T: `This API may enable the acquisition of information pertaining to user preferences.`
### Patterns
* Follow the
[F pattern](https://m3.material.io/foundations/content-design/style-guide/ux-writing-best-practices#3a833840-43db-4f6e-8133-c4665c17d176)
* One sentence, one idea
* "To get what you want, do this"
* DO: `To save changes, drop a folder here`
* DON'T: `Drop in a folder to add to Workspace (what's a Workspace?)`
* "Do this to recover"
* DO: `Shorten filename to 64 characters or less`
* DON'T: `Invalid filename`
### Mechanics
* Say “you”
* [Look up](https://translate.google.com) short synonyms
* DO: `Keep, more, stop, get, send, add, fit, …`
* DON'T: `Preserve, additional, prevent, receive, submit, create, …`
* Cut, cut, cut
* DON'T: `Please, sorry, very, strongly, seamless, awesome, there is, there are, fast, quick, …`
* Use active voice
* DO: `DevTools loaded source maps`
* DON'T: `Source maps were loaded by DevTools`
* Use [contractions](https://developers.google.com/style/contractions) but avoid [Latin abbreviations](https://m3.material.io/foundations/content-design/style-guide/ux-writing-best-practices#98d02949-1933-49df-b136-f7b72620b950)
* DO: `Can’t, don’t, isn’t, for example, that is, and more`
* DON'T: `Cannot, do not, is not, e.g., i.e., etc.`
* Use simple and common terms
* DO: `Website, page, extension, function`
* DON'T: `Debug target, debuggee, content script, call frame`
### Cosmetics
* Use sentence-case, not Title-Case (see [Capitalization guidelines](#capitalization-guidelines) below).
* DO: `Periodic background sync`
* DON'T: `Periodic Background Sync`
* Punctuate consistently
* Use serial comma: A, B, and C
* Skip periods in case of a single sentence
* Don't spell out numbers
* DO: `1, 2, 3, …`
* DON'T: `One, two, three, …`
* Use just 2 types of links: <u>Learn more</u> and the
[GM3 `Help` icon](https://fonts.corp.google.com/icons?selected=Google+Symbols:help).
## Capitalization guidelines
### Capitalize product names
Capitalize [product names](https://developers.google.com/style/product-names#capitalize),
web API names, but not [feature names](https://developers.google.com/style/product-names#feature-names).
* DO: `Chrome DevTools (product) lets you debug Background Fetch API (web API) by logging background fetch (feature) events.`
* DON'T: `Chrome devtools lets you debug background fetch API by logging Background Fetch events.`
### Use sentence case
Use sentence case in [UI element names](https://m3.material.io/foundations/content-design/style-guide/ux-writing-best-practices#fc5c2a78-f4bf-4d42-bdac-42ff80391129) as well as [titles and headings in text](https://developers.google.com/style/capitalization#capitalization-in-titles-and-headings).
That is, capitalize only the first word in the title, the first word in a
subheading after a colon, and any proper nouns or other terms that are
always capitalized a certain way.
*** aside
Examples: **Network request blocking**, **Blocked response cookies**
***
### Spell UI elements in text
When mentioning [UI elements in text](https://developers.google.com/style/ui-elements#formatting),
spell their names in bold and exactly as they are spelled, including
capitalization, which should be in sentence case.
*** aside
Example: Open the **Network request blocking** panel.
***
If an element doesn't have a
name however, <em>don't</em> capitalize its term and <em>don't</em> spell it in
bold.
*** aside
Example: A filter bar at the top of the **Network** panel, not ~~the **Filter** bar~~.
***
*** note
**Tip:** You can "stack" navigation paths in text regardless of element type.
For example:
In **Settings** > **Preferences** > **Appearance** > **Panel layout**,
select `auto`.
That was [Panel] > [Tab] > [Section] > [Drop-down menu].
***
## Resources
1. How to write UI texts
([slides](https://docs.google.com/presentation/d/1AfsX0JaMd1iBNH1WL2dMswXLuhGSU5j2cyAEHkJpoNA?resourcekey=0-cfKK72Q_tV8-uakhzuVx-g),
[recording](https://drive.google.com/file/d/19wOnbZHvXhH-tQLuE0M2B9fQMjosLC9O?resourcekey=0-FBrvUvnWMq0Wa98vkea9-A))