rust/library/std/src
Michael Goulet 0a0ea28f26
Rollup merge of #129545 - notriddle:notriddle/toolbar-v2, r=GuillaumeGomez
rustdoc: redesign toolbar and disclosure widgets

Fixes #77899
Fixes #90310

## Preview

| before | after
| ------ | -----
| ![image](https://github.com/user-attachments/assets/ebeec185-3a72-481d-921e-a9a885f348d9) | ![image](https://github.com/user-attachments/assets/08735a65-99d1-4523-ab77-ddb164c0a5db)
| ![image](https://github.com/user-attachments/assets/ae8e0f24-49cb-445d-b9bd-cec9c57b94e7) | ![image](https://github.com/user-attachments/assets/ba484f94-b031-41fc-b8a8-6cd81be8fb6b)
| ![image](https://github.com/user-attachments/assets/8c2cc041-a138-4950-a12e-3d529c8a5339) | ![image](https://github.com/user-attachments/assets/e7f010bd-19e2-4711-85bf-3fd00c3e5647)
| ![image](https://github.com/user-attachments/assets/e2b63785-971c-489e-b069-eb85f6a30620) | ![image](https://github.com/user-attachments/assets/b65eea16-d6a3-4aa3-8a27-6ded74009010)
| ![image](https://github.com/user-attachments/assets/1c7b0901-a61a-4325-9d01-9d8b14b476aa) | ![image](https://github.com/user-attachments/assets/d4a485db-d9f1-4a62-94bc-a3d125ea6dc1)
| N/A | ![image](https://github.com/user-attachments/assets/7add0a2a-7fd7-483d-87ee-51ee45a2fe5d)
| ![image](https://github.com/user-attachments/assets/334f50bc-9f8d-42d9-a7df-95058f7cdfd5) | ![image](https://github.com/user-attachments/assets/451fcc22-b034-453c-ae4b-b948fd6bd779)
| ![image](https://github.com/user-attachments/assets/132f720c-802a-466d-bd55-c7a4750acdc3) | ![image](https://github.com/user-attachments/assets/177b7921-06c5-467d-87d3-9cdf88c4e50b)

https://notriddle.com/rustdoc-html-demo-12/toolbar-v2/std/index.html

## Description

This adds labels to the icons and moves them away from the search box.

These changes are made together, because they work together, but are based on several complaints:

* The [+/-] thing are a Reddit-ism. They don't look like buttons, but look like syntax <https://rust-lang.zulipchat.com/#narrow/stream/266220-t-rustdoc/topic/More.20visual.20difference.20for.20the.20.2B.2F-.20.20Icons>, <https://github.com/rust-lang/rust/issues/59851> (some of these are laundry lists with more suggestions, but they all mention [+/-] looking wrong)

* The settings, help, and summary buttons are also too hard to recognize <https://lwn.net/Articles/987070/>, <https://github.com/rust-lang/rust/issues/90310>, <https://github.com/rust-lang/rust/issues/14475#issuecomment-274241997>, <https://internals.rust-lang.org/t/improve-rustdoc-design/12758> ("Not all functionality is self-explanatory, for example the [+] button in the top right corner, the theme picker or the settings button.")

The toggle-all and toggle-individual buttons both need done at once, since we want them to look like they go together. This changes them from both being [+/-] to both being arrows.

CC <https://github.com/rust-lang/rust/pull/113074#issuecomment-1677469680> and ``@jsha`` regarding the use of triangles for disclosure, which is what everyone wanted, but was pending a good toggle-all button. This PR adds a toggle-all button that should work.

Settings and Help are also migrated, so that the whole group can benefit from being described using actual words.

The breadcrumbs also get redesigned, so that they use less space, by shrinking the parent module path parts. This is done at the same time as the toolbar redesign because it's, effectively, moving space from the toolbar to the breadcrumbs.
This is aimed at avoiding any line wrapping at desktop sizes.

## Prior art

This style of toolbar, with explicit labels on the buttons, used to be more popular. It's not very common in web browsers nowadays, and for truly universal icons like ⬅️ I can understand why, but words are great when icons fail.

![image](https://github.com/user-attachments/assets/9a4a0498-232d-4d60-87b9-f601f4515254)
2024-09-23 23:49:11 -04:00
..
backtrace remove redundant imports 2023-12-10 10:56:22 +08:00
collections Reformat using the new identifier sorting from rustfmt 2024-09-22 19:11:29 -04:00
env remove redundant imports 2023-12-10 10:56:22 +08:00
error Reformat use declarations. 2024-07-29 08:26:52 +10:00
f16 std float tests: special-case Miri in feature detection 2024-08-08 12:17:50 +02:00
f32 these tests seem to work fine on i586 these days 2024-09-10 15:57:40 -07:00
f64 these tests seem to work fine on i586 these days 2024-09-10 15:57:40 -07:00
f128 Add core functions for f16 and f128 that require math routines 2024-08-01 15:38:53 -04:00
ffi Reformat using the new identifier sorting from rustfmt 2024-09-22 19:11:29 -04:00
fs Reformat using the new identifier sorting from rustfmt 2024-09-22 19:11:29 -04:00
hash std: implement the random feature 2024-09-23 10:29:51 +02:00
io Reformat using the new identifier sorting from rustfmt 2024-09-22 19:11:29 -04:00
net Reformat using the new identifier sorting from rustfmt 2024-09-22 19:11:29 -04:00
num removed nonfunctioning benchmark 2024-01-11 11:30:12 -05:00
os Reformat using the new identifier sorting from rustfmt 2024-09-22 19:11:29 -04:00
panic review: fix nits and move panic safety tests to the correct place 2020-09-25 23:10:24 +02:00
path impl CloneToUninit for Path and OsStr 2024-07-29 20:44:39 +03:00
pipe Cleanup sys module to match house style 2024-07-30 19:22:54 +00:00
prelude Avoid comments that describe multiple use items. 2024-07-17 08:02:46 +10:00
process Reformat using the new identifier sorting from rustfmt 2024-09-22 19:11:29 -04:00
sync Reformat using the new identifier sorting from rustfmt 2024-09-22 19:11:29 -04:00
sys std: switch to faster random sources on macOS and most BSDs 2024-09-23 10:36:16 +02:00
sys_common Reformat using the new identifier sorting from rustfmt 2024-09-22 19:11:29 -04:00
thread Reformat using the new identifier sorting from rustfmt 2024-09-22 19:11:29 -04:00
time Reformat using the new identifier sorting from rustfmt 2024-09-22 19:11:29 -04:00
alloc.rs Reformat use declarations. 2024-07-29 08:26:52 +10:00
ascii.rs Reformat using the new identifier sorting from rustfmt 2024-09-22 19:11:29 -04:00
backtrace.rs Reformat using the new identifier sorting from rustfmt 2024-09-22 19:11:29 -04:00
env.rs Rollup merge of #128535 - mmvanheusden:master, r=workingjubilee 2024-09-17 17:28:31 +02:00
error.rs Reformat using the new identifier sorting from rustfmt 2024-09-22 19:11:29 -04:00
f16.rs copysign with sign being a NaN is non-portable 2024-08-28 12:06:28 +02:00
f32.rs Reformat using the new identifier sorting from rustfmt 2024-09-22 19:11:29 -04:00
f64.rs Reformat using the new identifier sorting from rustfmt 2024-09-22 19:11:29 -04:00
f128.rs copysign with sign being a NaN is non-portable 2024-08-28 12:06:28 +02:00
fs.rs Rollup merge of #129718 - lolbinarycat:remove_dir-docs, r=Noratrieb 2024-09-21 07:22:47 +02:00
keyword_docs.rs Trivial grammar fix in const keyword docs 2024-08-06 21:59:04 -05:00
lib.miri.rs add 'x.py miri', and make it work for 'library/{core,alloc,std}' 2024-04-03 20:27:20 +02:00
lib.rs Rollup merge of #129545 - notriddle:notriddle/toolbar-v2, r=GuillaumeGomez 2024-09-23 23:49:11 -04:00
macros.rs Add math functions for f16 and f128 2024-08-01 15:38:51 -04:00
num.rs Reformat using the new identifier sorting from rustfmt 2024-09-22 19:11:29 -04:00
panic.rs Reformat using the new identifier sorting from rustfmt 2024-09-22 19:11:29 -04:00
panicking.rs Auto merge of #129019 - kromych:master, r=workingjubilee 2024-09-08 10:28:26 +00:00
pat.rs Add pattern types to parser 2024-04-08 11:57:17 +00:00
path.rs Reformat using the new identifier sorting from rustfmt 2024-09-22 19:11:29 -04:00
pipe.rs Reformat using the new identifier sorting from rustfmt 2024-09-22 19:11:29 -04:00
process.rs Reformat using the new identifier sorting from rustfmt 2024-09-22 19:11:29 -04:00
random.rs random: add tracking issue, address other comments 2024-09-23 10:36:16 +02:00
rt.rs Fixed some typos in the standard library documentation/comments 2024-08-31 14:41:01 +09:00
time.rs [Clippy] Swap instant_subtraction to use diagnostic item instead of path 2024-09-19 13:13:42 +01:00