@fusion.dev/helix-docs 0.32.0 → 0.33.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -49,6 +49,12 @@ they are load-bearing: the first is how every token expresses both color modes
49
49
  in one declaration, and the second is how every overlay is drawn in the top
50
50
  layer.
51
51
 
52
+ Chromium 132 has both and still misses two things a page's stylesheet can say
53
+ through `::part()`, measured 15 Sep 2026: it ignores a range input's
54
+ `::-webkit-slider-thumb` and `::-webkit-slider-runnable-track` after a part, and
55
+ it looks for the `@keyframes` a `::part()` rule names inside the component's
56
+ shadow root, so no animation starts; the headless examples use neither.
57
+
52
58
  `:state()` is the third and is deliberately not with them, because it does
53
59
  degrade: a component that cannot record a state keeps whatever its resting rule
54
60
  draws, so a checkbox is drawn unchecked rather than drawn wrong or not at all.
@@ -97,6 +97,32 @@ The legend reads the same table, so the names and the colors cannot disagree
97
97
  with the chart's. Pointing them at two different tables is the only way to make
98
98
  them disagree, and it is not something to do by accident.
99
99
 
100
+ ## Right-to-left
101
+
102
+ On a page with `dir="rtl"`, an axis that follows reading order starts where the
103
+ text does, on the right: categories and time. The words around a drawing are
104
+ HTML and turn on their own, and the drawing turns with them, so the name under
105
+ a column is that column's name in either direction. The pointer and the tooltip
106
+ read the drawing the same way. An axis of values keeps its own direction.
107
+
108
+ - **What turns.** `Bar Chart`'s columns, and its rows, which grow out of their
109
+ names at the right. `Line Chart`, `Area Chart` and `Sparkline`, with their
110
+ end marks. `Heatmap`'s weeks, which were already a grid laid out along the
111
+ line. A half `Donut Chart`, which is read across.
112
+ - **What does not.** Up is more in every script, so values keep their vertical
113
+ sense, and numerals are text beside the drawing, so none reads backwards. A
114
+ whole `Donut Chart` keeps its first slice at twelve and runs clockwise, which
115
+ is a clock's convention rather than a script's. `Scatter Chart` is laid out as
116
+ on a left-to-right page, its y axis on the left and more to the right, because
117
+ both of its axes are measures and a number line runs that way in every
118
+ script. Its axis names read in their own direction, so a name in Arabic reads
119
+ right to left under the plot's far end, and its summary and tooltip read the
120
+ way the page does.
121
+
122
+ A chart that should read left to right anyway, a number line in a mathematics
123
+ text for instance, takes `dir="ltr"` on the element, and the platform's own
124
+ attribute is the whole of the switch.
125
+
100
126
  ## Reduced motion
101
127
 
102
128
  Charts animate on entry and on data change, and every one of them answers
@@ -52,6 +52,20 @@ An icon with no `label` is hidden from assistive technology, which is right when
52
52
  the words are beside it and wrong when they are not. `Icon.Button` takes a
53
53
  `label` because it never has words beside it.
54
54
 
55
+ ## One that points along the line
56
+
57
+ ```html
58
+ <helix-icon
59
+ mirror
60
+ name="arrow-right"
61
+ ></helix-icon>
62
+ ```
63
+
64
+ The names are physical, so `arrow-right` points right on every page. An arrow
65
+ that means forward or back asks with `mirror` to turn round on a right-to-left
66
+ page, which every caret the library draws already does.
67
+ [Localization](./localization) has the rest.
68
+
55
69
  ## Importing a glyph directly
56
70
 
57
71
  ```ts
@@ -18,11 +18,42 @@ Set `dir` and the layout flips:
18
18
  ```
19
19
 
20
20
  Every component is written in logical properties, `inline-start` rather than
21
- `left`, `margin-block` rather than `margin-top`. Sixty-seven stylesheets name a
22
- direction, and **not one of them names a physical side**: there is no
23
- `margin-left`, no `padding-right` and no `inset-top` anywhere in the library.
24
- Nothing infers the direction for you and nothing needs to: the document says it
25
- and the components follow.
21
+ `left`, `margin-block` rather than `margin-top`. Nothing infers the direction
22
+ for you and nothing needs to: the document says it and the components follow.
23
+
24
+ **A physical side appears only where the thing it places is physical.** A
25
+ floating panel is placed from coordinates measured from the viewport's left
26
+ edge, so it and its arrow are written in `left` and `top`. Everything a reader
27
+ would expect to mirror still does.
28
+
29
+ **Charts mirror too.** A category or time axis starts where the text does, so
30
+ on a right-to-left page the first reading is on the right and the drawing,
31
+ its labels, its hover targets and its tooltips all turn together. Values keep
32
+ their vertical sense and numerals are not reversed. A whole donut stays
33
+ clockwise from twelve, which is a clock's convention rather than a script's,
34
+ and a scatter chart keeps its left-to-right plane, both of its axes being
35
+ measures. [Charting](./charting) has the rest.
36
+
37
+ **Carets and arrow keys turn too.** A caret meaning next or previous, the one
38
+ between two crumbs and a shut disclosure all point along the line, so on a
39
+ right-to-left page they point the other way, and every arrow key moves where it
40
+ points on screen: the left arrow moves to the next tab, the next day, the next
41
+ control in a toolbar, and opens a tree's branch or a menu's submenu, whose caret
42
+ points left. A slider and a splitter's divider move the way the key points.
43
+
44
+ A media player is an exception: its timeline and its skip buttons run left to
45
+ right in every script, a tape having one direction, so the left arrow rewinds.
46
+ A pin input is the other. A code is read like a phone number, so its boxes run
47
+ left to right on every page: the first character typed goes in the leftmost
48
+ box, a pasted code fills rightward and the right arrow moves on, while its
49
+ label, hint and error read the way the page does.
50
+
51
+ That is also how `placement` reads. The side is physical and the alignment is
52
+ logical: `right` is the right of the anchor in either direction, and
53
+ `bottom-start` lines a panel up with the anchor's start edge, which is its right
54
+ edge on a right-to-left page. A panel with no room on its side still flips to
55
+ the other one, so a `right-start` panel beside a rail at the start of a
56
+ right-to-left page opens to its left.
26
57
 
27
58
  The same is true of anything you write on top. Use logical properties and your
28
59
  layout flips with ours; use `left` and `right` and it will not.
@@ -84,8 +115,20 @@ would be a second one to keep in step with yours.
84
115
  and font fallback all key off it.
85
116
  - **Numerals.** `Intl` handles the digits; a hardcoded `%` or a currency symbol
86
117
  in your own markup will not move to the right side.
87
- - **Icons that point.** A chevron meaning "forward" is mirrored by the logical
88
- properties; one baked into an SVG path is not.
118
+ - **Icons that point.** A caret a component draws turns on its own. An icon you
119
+ place does not unless you ask, because the names are physical: `mirror` turns
120
+ one on a right-to-left page, for an arrow that means forward or back.
121
+
122
+ ```html
123
+ <helix-button>
124
+ Continue
125
+ <helix-icon
126
+ mirror
127
+ name="arrow-right"
128
+ slot="end"
129
+ ></helix-icon>
130
+ </helix-button>
131
+ ```
89
132
 
90
133
  ## What is not covered
91
134