mirror of
https://github.com/snachodog/just-the-docs.git
synced 2025-04-10 14:01:22 -06:00
This PR fixes some accessibility issues in our theme docs (i.e. not generated code) flagged by #1513. Here, I target changes that I say are not "systemic", i.e. issues that are easily resolvable by changing our copy and page structure (rather than issues that are created by how kramdown/rouge generates HTML, or reworking our color themes). Here's a quick summary of the manual changes I made: - ~~writing some JS to set `tabindex="0"` on all code blocks; I'd prefer a ruby-native solution, but that involves writing Ruby code, which is incompatible with the pages gem~~ I've moved this to #1533 - rewriting many headings named "Example" which were almost always h4s into more descriptive headings + the appropriate heading level, adding .text-delta to maintain the previous style when necessary - removing some old heading ID hacks in `index-test` that are no longer necessary, since Jekyll does this automatically now - fixing the table headings in `docs/utilities/layout.md` - adding accessible titles + descriptions to the mermaid examples - occasionally, slightly moving around copy to make it align with new headings If you test with #1513 with the following rules disabled: ```rb skipped_rules = [ 'color-contrast', # requires theme auditing # issues w/ autogenerated footnotes 'aria-allowed-role', 'landmark-no-duplicate-contentinfo', 'landmark-unique', 'aria-deprecated-role', # issues w/ markdown checkboxes 'label' ] ``` You should get passing tests :) which is awesome! ## next steps 1. we need to do a pass over our docs copy - very inconsistent. This has been a pain point for me for a while now, just need to find time to sit down and do it. In particular, I'd love to standardize how we display example code (perhaps even hiding it with `<details>` and `<summary>`?), our headings language, what goes into the ToC, our overall writing style, etc. 2. ~~I don't love the JS hack for adding `tabindex="0"` to code blocks (so that they are keyboard-focusable). Ideally, we'd add a custom formatter to rouge to do this, but we can't execute arbitrary Ruby code when users use `github-pages`. I'll look into this some more - maybe rouge would be open to adding this as a feature.~~ see: #1533 4. There are some systemic issues that need a deeper look: 1. The most common issue is still color-contrast. Fixing this involves: - looking at our whites/blacks/grays for core text and highlighting - reevaluating our syntax highlighting themes - fixing dark mode, once and for all :) - also, picking accessible callout colours! 2. kramdown's autogenerated footnotes feature creates a bunch of errors that aXe flags: it seems like a deprecated aria role is being used, and perhaps some misuse of markup. Need to look into this more before I can make a solid attempt at resolving this issue. 3. We demonstrate the use of `- [ ]`, but this generates `<input type="checkbox">` values with no label. I'm not entirely sure what the best way to fix this problem is (without writing custom Ruby code). I'll have to think about this some more. --------- Co-authored-by: Michael Ball <michael@mball.co>
328 lines
7.1 KiB
Markdown
328 lines
7.1 KiB
Markdown
---
|
|
title: Markdown kitchen sink
|
|
nav_order: 99
|
|
---
|
|
|
|
<button class="btn js-toggle-dark-mode">Preview dark color scheme</button>
|
|
|
|
<script>
|
|
const toggleDarkMode = document.querySelector('.js-toggle-dark-mode');
|
|
|
|
jtd.addEvent(toggleDarkMode, 'click', function(){
|
|
if (jtd.getTheme() === 'dark') {
|
|
jtd.setTheme('light');
|
|
toggleDarkMode.textContent = 'Preview dark color scheme';
|
|
} else {
|
|
jtd.setTheme('dark');
|
|
toggleDarkMode.textContent = 'Return to the light side';
|
|
}
|
|
});
|
|
</script>
|
|
|
|
Text can be **bold**, _italic_, or ~~strikethrough~~.
|
|
|
|
[Link to another page]({{site.baseurl}}/).
|
|
|
|
There should be whitespace between paragraphs.
|
|
|
|
There should be whitespace between paragraphs. We recommend including a README, or a file with information about your project.
|
|
|
|
# Header 1
|
|
|
|
This is a normal paragraph following a header. GitHub is a code hosting platform for version control and collaboration. It lets you and others work together on projects from anywhere.
|
|
|
|
## Header 2
|
|
|
|
> This is a blockquote following a header.
|
|
>
|
|
> When something is important enough, you do it even if the odds are not in your favor.
|
|
|
|
### Header 3
|
|
|
|
```js
|
|
// Javascript code with syntax highlighting.
|
|
var fun = function lang(l) {
|
|
dateformat.i18n = require('./lang/' + l)
|
|
return true;
|
|
}
|
|
```
|
|
|
|
```ruby
|
|
# Ruby code with syntax highlighting
|
|
GitHubPages::Dependencies.gems.each do |gem, version|
|
|
s.add_dependency(gem, "= #{version}")
|
|
end
|
|
```
|
|
|
|
#### Header 4 `with code not transformed`
|
|
|
|
* This is an unordered list following a header.
|
|
* This is an unordered list following a header.
|
|
* This is an unordered list following a header.
|
|
|
|
##### Header 5
|
|
|
|
1. This is an ordered list following a header.
|
|
2. This is an ordered list following a header.
|
|
3. This is an ordered list following a header.
|
|
|
|
###### Header 6
|
|
|
|
[This is a very long link which wraps and therefore doesn't overflow
|
|
even when it comes at the beginning](.) of the line.
|
|
|
|
- [This is a very long link which wraps and therefore doesn't overflow the line
|
|
when used first in an item ](.) in a list.
|
|
|
|
| head1 | head two | three |
|
|
|:-------------|:------------------|:------|
|
|
| ok | good swedish fish | nice |
|
|
| out of stock | good and plenty | nice |
|
|
| ok | good `oreos` | hmm |
|
|
| ok | good `zoute` drop | yumm |
|
|
|
|
### There's a horizontal rule below this.
|
|
|
|
* * *
|
|
|
|
### Here is an unordered list:
|
|
|
|
* Item foo
|
|
* Item bar
|
|
* Item baz
|
|
* Item zip
|
|
|
|
### And an ordered list:
|
|
|
|
1. Item one
|
|
1. Item two
|
|
1. Item three
|
|
1. Item four
|
|
|
|
### And an ordered list, continued:
|
|
|
|
1. Item one
|
|
1. Item two
|
|
|
|
Some text
|
|
|
|
{:style="counter-reset:none"}
|
|
1. Item three
|
|
1. Item four
|
|
|
|
### And an ordered list starting from 42:
|
|
|
|
{:style="counter-reset:step-counter 41"}
|
|
1. Item 42
|
|
1. Item 43
|
|
1. Item 44
|
|
|
|
### And a nested list:
|
|
|
|
- level 1 item
|
|
- level 2 item
|
|
- level 2 item
|
|
- level 3 item
|
|
- level 3 item
|
|
- level 1 item
|
|
- level 2 item
|
|
- level 2 item
|
|
- level 2 item
|
|
- level 1 item
|
|
- level 2 item
|
|
- level 2 item
|
|
- level 1 item
|
|
|
|
### Nesting an ol in ul in an ol
|
|
|
|
- level 1 item (ul)
|
|
1. level 2 item (ol)
|
|
1. level 2 item (ol)
|
|
- level 3 item (ul)
|
|
- level 3 item (ul)
|
|
- level 1 item (ul)
|
|
1. level 2 item (ol)
|
|
1. level 2 item (ol)
|
|
- level 3 item (ul)
|
|
- level 3 item (ul)
|
|
1. level 4 item (ol)
|
|
1. level 4 item (ol)
|
|
- level 3 item (ul)
|
|
- level 3 item (ul)
|
|
- level 1 item (ul)
|
|
|
|
### And a task list
|
|
|
|
- [ ] Hello, this is a TODO item
|
|
- [ ] Hello, this is another TODO item
|
|
- [x] Goodbye, this item is done
|
|
|
|
### Nesting task lists
|
|
|
|
- [ ] level 1 item (task)
|
|
- [ ] level 2 item (task)
|
|
- [ ] level 2 item (task)
|
|
- [ ] level 1 item (task)
|
|
- [ ] level 1 item (task)
|
|
|
|
### Nesting a ul in a task list
|
|
|
|
- [ ] level 1 item (task)
|
|
- level 2 item (ul)
|
|
- level 2 item (ul)
|
|
- [ ] level 1 item (task)
|
|
- [ ] level 1 item (task)
|
|
|
|
### Nesting a task list in a ul
|
|
|
|
- level 1 item (ul)
|
|
- [ ] level 2 item (task)
|
|
- [ ] level 2 item (task)
|
|
- level 1 item (ul)
|
|
- level 1 item (ul)
|
|
|
|
### Small image
|
|
|
|

|
|
|
|
### Large image
|
|
|
|

|
|
|
|
"[Wroclaw University Library digitizing rare archival texts](https://www.flickr.com/photos/97810305@N08/9401451269)" by [j_cadmus](https://www.flickr.com/photos/97810305@N08) is marked with [CC BY 2.0](https://creativecommons.org/licenses/by/2.0/?ref=openverse).
|
|
|
|
### Labels
|
|
|
|
I'm a label
|
|
{: .label }
|
|
|
|
blue
|
|
{: .label .label-blue }
|
|
green
|
|
{: .label .label-green }
|
|
purple
|
|
{: .label .label-purple }
|
|
yellow
|
|
{: .label .label-yellow }
|
|
red
|
|
{: .label .label-red }
|
|
|
|
**bold**
|
|
{: .label }
|
|
*italic*
|
|
{: .label }
|
|
***bold + italic***
|
|
{: .label }
|
|
|
|
### Definition lists can be used with HTML syntax.
|
|
|
|
<dl>
|
|
<dt>Name</dt>
|
|
<dd>Godzilla</dd>
|
|
<dt>Born</dt>
|
|
<dd>1952</dd>
|
|
<dt>Birthplace</dt>
|
|
<dd>Japan</dd>
|
|
<dt>Color</dt>
|
|
<dd>Green</dd>
|
|
</dl>
|
|
|
|
#### Multiple description terms and values
|
|
|
|
Term
|
|
: Brief description of Term
|
|
|
|
Longer Term
|
|
: Longer description of Term,
|
|
possibly more than one line
|
|
|
|
Term
|
|
: First description of Term,
|
|
possibly more than one line
|
|
|
|
: Second description of Term,
|
|
possibly more than one line
|
|
|
|
Term1
|
|
Term2
|
|
: Single description of Term1 and Term2,
|
|
possibly more than one line
|
|
|
|
Term1
|
|
Term2
|
|
: First description of Term1 and Term2,
|
|
possibly more than one line
|
|
|
|
: Second description of Term1 and Term2,
|
|
possibly more than one line
|
|
|
|
### More code
|
|
|
|
```python{% raw %}
|
|
def dump_args(func):
|
|
"This decorator dumps out the arguments passed to a function before calling it"
|
|
argnames = func.func_code.co_varnames[:func.func_code.co_argcount]
|
|
fname = func.func_name
|
|
def echo_func(*args,**kwargs):
|
|
print fname, ":", ', '.join(
|
|
'%s=%r' % entry
|
|
for entry in zip(argnames,args) + kwargs.items())
|
|
return func(*args, **kwargs)
|
|
return echo_func
|
|
|
|
@dump_args
|
|
def f1(a,b,c):
|
|
print a + b + c
|
|
|
|
f1(1, 2, 3)
|
|
|
|
def precondition(precondition, use_conditions=DEFAULT_ON):
|
|
return conditions(precondition, None, use_conditions)
|
|
|
|
def postcondition(postcondition, use_conditions=DEFAULT_ON):
|
|
return conditions(None, postcondition, use_conditions)
|
|
|
|
class conditions(object):
|
|
__slots__ = ('__precondition', '__postcondition')
|
|
|
|
def __init__(self, pre, post, use_conditions=DEFAULT_ON):
|
|
if not use_conditions:
|
|
pre, post = None, None
|
|
|
|
self.__precondition = pre
|
|
self.__postcondition = post
|
|
{% endraw %}```
|
|
|
|
```
|
|
Long, single-line code blocks should not wrap. They should horizontally scroll if they are too long. This line should be long enough to demonstrate this.
|
|
```
|
|
|
|
### Mermaid Diagrams
|
|
|
|
The following code is displayed as a diagram only when a `mermaid` key supplied in `_config.yml`.
|
|
|
|
```mermaid
|
|
graph TD;
|
|
accTitle: the diamond pattern
|
|
accDescr: a graph with four nodes: A points to B and C, while B and C both point to D
|
|
A-->B;
|
|
A-->C;
|
|
B-->D;
|
|
C-->D;
|
|
```
|
|
|
|
### Collapsed Section
|
|
|
|
The following uses the [`<details>`](https://docs.github.com/en/get-started/writing-on-github/working-with-advanced-formatting/organizing-information-with-collapsed-sections) tag to create a collapsed section.
|
|
|
|
<details markdown="block">
|
|
<summary>Shopping list (click me!)</summary>
|
|
|
|
This is content inside a `<details>` dropdown.
|
|
|
|
- [ ] Apples
|
|
- [ ] Oranges
|
|
- [ ] Milk
|
|
|
|
</details>
|