@fusion.dev/helix 0.53.6 → 0.55.0

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.
Files changed (43) hide show
  1. package/custom-elements.json +187 -235
  2. package/dist/avatar/root/avatar-root.css.js +1 -1
  3. package/dist/avatar/root/avatar-root.d.ts +5 -1
  4. package/dist/bar-chart/root/bar-chart-root.css.js +19 -19
  5. package/dist/carousel/root/carousel-root.css.js +18 -18
  6. package/dist/carousel/root/carousel-root.d.ts +22 -15
  7. package/dist/checkbox/root/checkbox-root.css.js +20 -11
  8. package/dist/checkbox/root/checkbox-root.d.ts +19 -7
  9. package/dist/checkbox/root/checkbox-root.js +1 -1
  10. package/dist/color-picker/root/color-picker-root.css.js +3 -2
  11. package/dist/description-list/root/description-list-root.d.ts +6 -3
  12. package/dist/dialog/root/dialog-root.css.js +3 -3
  13. package/dist/dialog/root/dialog-root.d.ts +24 -16
  14. package/dist/dialog/root/dialog-root.js +3 -3
  15. package/dist/flex/root/flex-root.css.js +8 -12
  16. package/dist/flex/root/flex-root.d.ts +23 -4
  17. package/dist/flex/root/flex-root.js +4 -4
  18. package/dist/grid/root/grid-root.css.js +3 -7
  19. package/dist/grid/root/grid-root.d.ts +14 -2
  20. package/dist/grid/root/grid-root.js +2 -2
  21. package/dist/image/root/image-root.css.js +1 -1
  22. package/dist/image/root/image-root.d.ts +7 -6
  23. package/dist/image/root/image-root.js +2 -6
  24. package/dist/legend/root/legend-root.css.js +12 -13
  25. package/dist/megamenu/root/megamenu-root.css.js +6 -6
  26. package/dist/orb/root/orb-root.d.ts +8 -1
  27. package/dist/progress/root/progress-root.d.ts +2 -2
  28. package/dist/radio/root/radio-root.css.js +25 -14
  29. package/dist/radio/root/radio-root.d.ts +36 -14
  30. package/dist/radio/root/radio-root.js +3 -0
  31. package/dist/rating/root/rating-root.css.js +2 -2
  32. package/dist/rating/root/rating-root.d.ts +17 -12
  33. package/dist/rating/root/rating-root.js +1 -1
  34. package/dist/select/root/select-root.d.ts +5 -5
  35. package/dist/steps/step/step.css.js +7 -6
  36. package/dist/switch/root/switch-root.css.js +5 -4
  37. package/dist/table/column/table-column.css.js +4 -4
  38. package/dist/timeline/item/timeline-item.css.js +4 -2
  39. package/dist/toggle/group/toggle-group.css.js +6 -2
  40. package/dist/video/root/video-root.css.js +3 -2
  41. package/package.json +6 -6
  42. package/types/jsx.d.ts +1153 -519
  43. package/types/vue.d.ts +347 -136
package/types/jsx.d.ts CHANGED
@@ -1298,7 +1298,11 @@ never asked for a limit, including on the server. */
1298
1298
  export type HelixAvatarElementEvent<E = Event> = TypedEvent<HelixAvatar, E>;
1299
1299
 
1300
1300
  export type HelixAvatarProps = {
1301
- /** Whether the avatar is a circle or a rounded square. */
1301
+ /** Whether the avatar is a circle or a rounded square.
1302
+
1303
+ `rounded` and not `square`, which is the sharp-cornered pole of the same
1304
+ axis and what `QrCode` draws with it. This corner is `radii-md`, so the word
1305
+ for it is the one the registry already has. */
1302
1306
  shape?: (HelixAvatar["shape"]) | undefined;
1303
1307
  /** Edge length of the avatar. */
1304
1308
  size?: (HelixAvatar["size"]) | undefined;
@@ -1327,7 +1331,11 @@ Mirrored to `data-status` rather than reflected, as `Image` explains. */
1327
1331
  };
1328
1332
 
1329
1333
  export type HelixAvatarSolidJsProps = {
1330
- /** Whether the avatar is a circle or a rounded square. */
1334
+ /** Whether the avatar is a circle or a rounded square.
1335
+
1336
+ `rounded` and not `square`, which is the sharp-cornered pole of the same
1337
+ axis and what `QrCode` draws with it. This corner is `radii-md`, so the word
1338
+ for it is the one the registry already has. */
1331
1339
  "prop:shape"?: (HelixAvatar["shape"]) | undefined;
1332
1340
  /** Edge length of the avatar. */
1333
1341
  "prop:size"?: (HelixAvatar["size"]) | undefined;
@@ -1563,19 +1571,12 @@ shadow root names a table in that root rather than in the document. A
1563
1571
  Absent falls back to the table's own caption, which is usually the right
1564
1572
  words and is already written. */
1565
1573
  label?: (HelixBarChart["label"]) | undefined;
1566
- /** Whether the categories run down the side rather than along the bottom.
1567
-
1568
- Absent is columns. `horizontal` is the one to reach for when the category
1569
- names are words rather than dates: a row of long names either overlaps or
1570
- turns on its side, and neither is as readable as putting them down the left
1571
- where they read normally. */
1572
- direction?: (HelixBarChart["direction"]) | undefined;
1573
1574
  /** Which rules are drawn across the plot, if any.
1574
1575
 
1575
1576
  Absent draws none. `value` rules the axis the columns are *measured* on,
1576
1577
  `category` rules the axis they are *arranged* on with one through each
1577
1578
  group, and `both` draws both. Which of those is horizontal turns with
1578
- `direction`, because a rule belongs to an axis and not to a screen edge.
1579
+ `orientation`, because a rule belongs to an axis and not to a screen edge.
1579
1580
 
1580
1581
  **A bare `gridlines` means `value`**, and so does anything unrecognized: an
1581
1582
  unrecognized value that draws nothing is indistinguishable from the
@@ -1611,6 +1612,16 @@ A line among columns measures from zero, because the columns do and they
1611
1612
  share the axis. So does a line on the second scale, which is that scale's
1612
1613
  own rule rather than this one's. */
1613
1614
  lines?: (HelixBarChart["lines"]) | undefined;
1615
+ /** Whether the categories run down the side rather than along the bottom.
1616
+
1617
+ Absent is columns. `horizontal` is the one to reach for when the category
1618
+ names are words rather than dates: a row of long names either overlaps or
1619
+ turns on its side, and neither is as readable as putting them down the left
1620
+ where they read normally.
1621
+
1622
+ `orientation` and not `orientation`, which `Trend` uses in the same group for
1623
+ which way a number moved. */
1624
+ orientation?: (HelixBarChart["orientation"]) | undefined;
1614
1625
  /** Which series are measured against a scale of their own, by name.
1615
1626
 
1616
1627
  Separated and matched the way `lines` is, against the column headings the
@@ -1765,19 +1776,12 @@ shadow root names a table in that root rather than in the document. A
1765
1776
  Absent falls back to the table's own caption, which is usually the right
1766
1777
  words and is already written. */
1767
1778
  "prop:label"?: (HelixBarChart["label"]) | undefined;
1768
- /** Whether the categories run down the side rather than along the bottom.
1769
-
1770
- Absent is columns. `horizontal` is the one to reach for when the category
1771
- names are words rather than dates: a row of long names either overlaps or
1772
- turns on its side, and neither is as readable as putting them down the left
1773
- where they read normally. */
1774
- "prop:direction"?: (HelixBarChart["direction"]) | undefined;
1775
1779
  /** Which rules are drawn across the plot, if any.
1776
1780
 
1777
1781
  Absent draws none. `value` rules the axis the columns are *measured* on,
1778
1782
  `category` rules the axis they are *arranged* on with one through each
1779
1783
  group, and `both` draws both. Which of those is horizontal turns with
1780
- `direction`, because a rule belongs to an axis and not to a screen edge.
1784
+ `orientation`, because a rule belongs to an axis and not to a screen edge.
1781
1785
 
1782
1786
  **A bare `gridlines` means `value`**, and so does anything unrecognized: an
1783
1787
  unrecognized value that draws nothing is indistinguishable from the
@@ -1813,6 +1817,16 @@ A line among columns measures from zero, because the columns do and they
1813
1817
  share the axis. So does a line on the second scale, which is that scale's
1814
1818
  own rule rather than this one's. */
1815
1819
  "prop:lines"?: (HelixBarChart["lines"]) | undefined;
1820
+ /** Whether the categories run down the side rather than along the bottom.
1821
+
1822
+ Absent is columns. `horizontal` is the one to reach for when the category
1823
+ names are words rather than dates: a row of long names either overlaps or
1824
+ turns on its side, and neither is as readable as putting them down the left
1825
+ where they read normally.
1826
+
1827
+ `orientation` and not `orientation`, which `Trend` uses in the same group for
1828
+ which way a number moved. */
1829
+ "prop:orientation"?: (HelixBarChart["orientation"]) | undefined;
1816
1830
  /** Which series are measured against a scale of their own, by name.
1817
1831
 
1818
1832
  Separated and matched the way `lines` is, against the column headings the
@@ -2642,9 +2656,9 @@ where an arrow over a photograph belongs. */
2642
2656
  /** Which side of the slides the arrows sit on.
2643
2657
 
2644
2658
  The same four sides as `indicatorPlacement` and the same default, so a
2645
- carousel that moves only one of them keeps the other where it was.
2646
- `inline-start` or `inline-end` stacks the arrows into a column, which is
2647
- what a vertical track usually wants.
2659
+ carousel that moves only one of them keeps the other where it was. `start`
2660
+ or `end` stacks the arrows into a column, which is what a vertical track
2661
+ usually wants.
2648
2662
 
2649
2663
  `overlay` puts them on the slides, at the track's own edges, which is what a
2650
2664
  full-bleed carousel wants: the slide is the page and the controls are on it
@@ -2661,9 +2675,9 @@ chrome can go. */
2661
2675
  /** Which side of the slides the arrows sit on.
2662
2676
 
2663
2677
  The same four sides as `indicatorPlacement` and the same default, so a
2664
- carousel that moves only one of them keeps the other where it was.
2665
- `inline-start` or `inline-end` stacks the arrows into a column, which is
2666
- what a vertical track usually wants.
2678
+ carousel that moves only one of them keeps the other where it was. `start`
2679
+ or `end` stacks the arrows into a column, which is what a vertical track
2680
+ usually wants.
2667
2681
 
2668
2682
  `overlay` puts them on the slides, at the track's own edges, which is what a
2669
2683
  full-bleed carousel wants: the slide is the page and the controls are on it
@@ -2691,8 +2705,9 @@ block edge the run is a row and this is `justify-self`; on an inline edge it
2691
2705
  is a column and the same question is `align-self`. A consumer should not
2692
2706
  have to know which of those two words their edge wanted.
2693
2707
 
2694
- Logical, like the placement: `start` is the left in English and the right in
2695
- Arabic on a horizontal run, and the top on a vertical one.
2708
+ Logical, like the placement's own `start` and `end`: `start` is the left in
2709
+ English and the right in Arabic on a horizontal run, and the top on a
2710
+ vertical one.
2696
2711
 
2697
2712
  Unset splits the row, dots to the start and arrows to the end, which is
2698
2713
  what keeps two items in one grid cell from landing on each other. Beside the
@@ -2715,8 +2730,9 @@ block edge the run is a row and this is `justify-self`; on an inline edge it
2715
2730
  is a column and the same question is `align-self`. A consumer should not
2716
2731
  have to know which of those two words their edge wanted.
2717
2732
 
2718
- Logical, like the placement: `start` is the left in English and the right in
2719
- Arabic on a horizontal run, and the top on a vertical one.
2733
+ Logical, like the placement's own `start` and `end`: `start` is the left in
2734
+ English and the right in Arabic on a horizontal run, and the top on a
2735
+ vertical one.
2720
2736
 
2721
2737
  Unset splits the row, dots to the start and arrows to the end, which is
2722
2738
  what keeps two items in one grid cell from landing on each other. Beside the
@@ -2727,31 +2743,43 @@ exist to avoid. */
2727
2743
  indicatorAlign?: (HelixCarousel["indicatorAlign"]) | undefined;
2728
2744
  /** Which side of the slides the dots sit on.
2729
2745
 
2730
- Unset is `block-end`, under them. `block-start` puts them above,
2731
- `inline-start` and `inline-end` beside, where a run of dots becomes a
2732
- column.
2746
+ Unset is `bottom`, under them. `top` puts them above, `start` and `end`
2747
+ beside, where a run of dots becomes a column.
2733
2748
 
2734
- **The sides of the content, not positions along a bar**, and logical names
2735
- rather than `top`/`left`: an `inline-start` carousel should put its dots on
2736
- the right in Arabic without being told.
2749
+ **The sides of the content, not positions along a bar.** `start` and `end`
2750
+ are the logical ones and they are logical because that axis flips: a
2751
+ carousel with its dots at the start should put them on the right in Arabic
2752
+ without being told. `top` and `bottom` are the block edges, which flip in
2753
+ no writing mode this library draws for, so the plain word is the honest one
2754
+ and `block-start` would be jargon standing in for it.
2737
2755
 
2738
- Independent of `controlsPlacement`. Both default to the block end, where
2739
- they share the row and split it, dots to the start and arrows to the end,
2756
+ **`Drawer` and `Toast` say it in exactly these four words**, and one
2757
+ vocabulary across the three is worth more than each family's own: a
2758
+ consumer who has placed a drawer knows where a carousel's dots go.
2759
+
2760
+ Independent of `controlsPlacement`. Both default to the bottom, where they
2761
+ share the row and split it, dots to the start and arrows to the end,
2740
2762
  arrived at by two defaults rather than by a rule about the pair, so moving
2741
2763
  one leaves the other alone. */
2742
2764
  "indicator-placement"?: (HelixCarousel["indicatorPlacement"]) | undefined;
2743
2765
  /** Which side of the slides the dots sit on.
2744
2766
 
2745
- Unset is `block-end`, under them. `block-start` puts them above,
2746
- `inline-start` and `inline-end` beside, where a run of dots becomes a
2747
- column.
2767
+ Unset is `bottom`, under them. `top` puts them above, `start` and `end`
2768
+ beside, where a run of dots becomes a column.
2769
+
2770
+ **The sides of the content, not positions along a bar.** `start` and `end`
2771
+ are the logical ones and they are logical because that axis flips: a
2772
+ carousel with its dots at the start should put them on the right in Arabic
2773
+ without being told. `top` and `bottom` are the block edges, which flip in
2774
+ no writing mode this library draws for, so the plain word is the honest one
2775
+ and `block-start` would be jargon standing in for it.
2748
2776
 
2749
- **The sides of the content, not positions along a bar**, and logical names
2750
- rather than `top`/`left`: an `inline-start` carousel should put its dots on
2751
- the right in Arabic without being told.
2777
+ **`Drawer` and `Toast` say it in exactly these four words**, and one
2778
+ vocabulary across the three is worth more than each family's own: a
2779
+ consumer who has placed a drawer knows where a carousel's dots go.
2752
2780
 
2753
- Independent of `controlsPlacement`. Both default to the block end, where
2754
- they share the row and split it, dots to the start and arrows to the end,
2781
+ Independent of `controlsPlacement`. Both default to the bottom, where they
2782
+ share the row and split it, dots to the start and arrows to the end,
2755
2783
  arrived at by two defaults rather than by a rule about the pair, so moving
2756
2784
  one leaves the other alone. */
2757
2785
  indicatorPlacement?: (HelixCarousel["indicatorPlacement"]) | undefined;
@@ -2960,9 +2988,9 @@ where an arrow over a photograph belongs. */
2960
2988
  /** Which side of the slides the arrows sit on.
2961
2989
 
2962
2990
  The same four sides as `indicatorPlacement` and the same default, so a
2963
- carousel that moves only one of them keeps the other where it was.
2964
- `inline-start` or `inline-end` stacks the arrows into a column, which is
2965
- what a vertical track usually wants.
2991
+ carousel that moves only one of them keeps the other where it was. `start`
2992
+ or `end` stacks the arrows into a column, which is what a vertical track
2993
+ usually wants.
2966
2994
 
2967
2995
  `overlay` puts them on the slides, at the track's own edges, which is what a
2968
2996
  full-bleed carousel wants: the slide is the page and the controls are on it
@@ -2979,9 +3007,9 @@ chrome can go. */
2979
3007
  /** Which side of the slides the arrows sit on.
2980
3008
 
2981
3009
  The same four sides as `indicatorPlacement` and the same default, so a
2982
- carousel that moves only one of them keeps the other where it was.
2983
- `inline-start` or `inline-end` stacks the arrows into a column, which is
2984
- what a vertical track usually wants.
3010
+ carousel that moves only one of them keeps the other where it was. `start`
3011
+ or `end` stacks the arrows into a column, which is what a vertical track
3012
+ usually wants.
2985
3013
 
2986
3014
  `overlay` puts them on the slides, at the track's own edges, which is what a
2987
3015
  full-bleed carousel wants: the slide is the page and the controls are on it
@@ -3009,8 +3037,9 @@ block edge the run is a row and this is `justify-self`; on an inline edge it
3009
3037
  is a column and the same question is `align-self`. A consumer should not
3010
3038
  have to know which of those two words their edge wanted.
3011
3039
 
3012
- Logical, like the placement: `start` is the left in English and the right in
3013
- Arabic on a horizontal run, and the top on a vertical one.
3040
+ Logical, like the placement's own `start` and `end`: `start` is the left in
3041
+ English and the right in Arabic on a horizontal run, and the top on a
3042
+ vertical one.
3014
3043
 
3015
3044
  Unset splits the row, dots to the start and arrows to the end, which is
3016
3045
  what keeps two items in one grid cell from landing on each other. Beside the
@@ -3033,8 +3062,9 @@ block edge the run is a row and this is `justify-self`; on an inline edge it
3033
3062
  is a column and the same question is `align-self`. A consumer should not
3034
3063
  have to know which of those two words their edge wanted.
3035
3064
 
3036
- Logical, like the placement: `start` is the left in English and the right in
3037
- Arabic on a horizontal run, and the top on a vertical one.
3065
+ Logical, like the placement's own `start` and `end`: `start` is the left in
3066
+ English and the right in Arabic on a horizontal run, and the top on a
3067
+ vertical one.
3038
3068
 
3039
3069
  Unset splits the row, dots to the start and arrows to the end, which is
3040
3070
  what keeps two items in one grid cell from landing on each other. Beside the
@@ -3045,31 +3075,43 @@ exist to avoid. */
3045
3075
  "prop:indicatorAlign"?: (HelixCarousel["indicatorAlign"]) | undefined;
3046
3076
  /** Which side of the slides the dots sit on.
3047
3077
 
3048
- Unset is `block-end`, under them. `block-start` puts them above,
3049
- `inline-start` and `inline-end` beside, where a run of dots becomes a
3050
- column.
3078
+ Unset is `bottom`, under them. `top` puts them above, `start` and `end`
3079
+ beside, where a run of dots becomes a column.
3080
+
3081
+ **The sides of the content, not positions along a bar.** `start` and `end`
3082
+ are the logical ones and they are logical because that axis flips: a
3083
+ carousel with its dots at the start should put them on the right in Arabic
3084
+ without being told. `top` and `bottom` are the block edges, which flip in
3085
+ no writing mode this library draws for, so the plain word is the honest one
3086
+ and `block-start` would be jargon standing in for it.
3051
3087
 
3052
- **The sides of the content, not positions along a bar**, and logical names
3053
- rather than `top`/`left`: an `inline-start` carousel should put its dots on
3054
- the right in Arabic without being told.
3088
+ **`Drawer` and `Toast` say it in exactly these four words**, and one
3089
+ vocabulary across the three is worth more than each family's own: a
3090
+ consumer who has placed a drawer knows where a carousel's dots go.
3055
3091
 
3056
- Independent of `controlsPlacement`. Both default to the block end, where
3057
- they share the row and split it, dots to the start and arrows to the end,
3092
+ Independent of `controlsPlacement`. Both default to the bottom, where they
3093
+ share the row and split it, dots to the start and arrows to the end,
3058
3094
  arrived at by two defaults rather than by a rule about the pair, so moving
3059
3095
  one leaves the other alone. */
3060
3096
  "attr:indicator-placement"?: (HelixCarousel["indicatorPlacement"]) | undefined;
3061
3097
  /** Which side of the slides the dots sit on.
3062
3098
 
3063
- Unset is `block-end`, under them. `block-start` puts them above,
3064
- `inline-start` and `inline-end` beside, where a run of dots becomes a
3065
- column.
3099
+ Unset is `bottom`, under them. `top` puts them above, `start` and `end`
3100
+ beside, where a run of dots becomes a column.
3066
3101
 
3067
- **The sides of the content, not positions along a bar**, and logical names
3068
- rather than `top`/`left`: an `inline-start` carousel should put its dots on
3069
- the right in Arabic without being told.
3102
+ **The sides of the content, not positions along a bar.** `start` and `end`
3103
+ are the logical ones and they are logical because that axis flips: a
3104
+ carousel with its dots at the start should put them on the right in Arabic
3105
+ without being told. `top` and `bottom` are the block edges, which flip in
3106
+ no writing mode this library draws for, so the plain word is the honest one
3107
+ and `block-start` would be jargon standing in for it.
3070
3108
 
3071
- Independent of `controlsPlacement`. Both default to the block end, where
3072
- they share the row and split it, dots to the start and arrows to the end,
3109
+ **`Drawer` and `Toast` say it in exactly these four words**, and one
3110
+ vocabulary across the three is worth more than each family's own: a
3111
+ consumer who has placed a drawer knows where a carousel's dots go.
3112
+
3113
+ Independent of `controlsPlacement`. Both default to the bottom, where they
3114
+ share the row and split it, dots to the start and arrows to the end,
3073
3115
  arrived at by two defaults rather than by a rule about the pair, so moving
3074
3116
  one leaves the other alone. */
3075
3117
  "prop:indicatorPlacement"?: (HelixCarousel["indicatorPlacement"]) | undefined;
@@ -3772,19 +3814,31 @@ export type HelixCheckboxHelixBeforeToggleElementEvent =
3772
3814
  HelixCheckboxElementEvent<HelixBeforeToggleEvent>;
3773
3815
 
3774
3816
  export type HelixCheckboxProps = {
3775
- /** How the choice presents itself.
3817
+ /** Where the choice's own surface ends.
3818
+
3819
+ The question `separation` asks everywhere else, asked of one option, so it
3820
+ is that word: what these values pick is a surface, and `plain` is already
3821
+ the registry's own word for the answer this family used it for. `Radio`
3822
+ takes the same three for the same reason.
3776
3823
 
3777
- - `plain` is the default and is never written: a box beside its words,
3824
+ - `plain` is the resting one and is never written: a box beside its words,
3778
3825
  which is what a list of choices should be almost always.
3779
- - `card` puts it in a bounded surface, for options that need room to
3826
+ - `outlined` puts it in a bounded surface, for options that need room to
3780
3827
  explain themselves: a description, an icon, a price. It is the half a
3781
3828
  `data-card` link cannot do, because a link reports no value and belongs
3782
3829
  to no group, so a card that is genuinely an answer has to be this.
3783
-
3784
- The box stays in both. A card whose only marker was its own border would
3785
- ask a reader to compare surfaces across a row to find the answer, and would
3786
- leave nothing for a high-contrast display. */
3787
- variant?: (HelixCheckbox["variant"]) | undefined;
3830
+ - `filled` is that same card on a ground of its own with no edge, which is
3831
+ what a column of options wants where a hairline around every one of them
3832
+ is a grid of lines rather than a set of answers.
3833
+
3834
+ **`elevated` is the one value of the axis this family does not take.** A
3835
+ raised choice competes with a dialog: the top layer is where a thing that
3836
+ interrupts you lives, and an option in a form is not one of those.
3837
+
3838
+ The box stays in all of them. A card whose only marker was its own border
3839
+ would ask a reader to compare surfaces across a row to find the answer, and
3840
+ would leave nothing for a high-contrast display. */
3841
+ separation?: (HelixCheckbox["separation"]) | undefined;
3788
3842
  /** Whether the control is checked.
3789
3843
 
3790
3844
  One property rather than two. Writing always applies;
@@ -3850,19 +3904,31 @@ Here rather than on each control. */
3850
3904
  };
3851
3905
 
3852
3906
  export type HelixCheckboxSolidJsProps = {
3853
- /** How the choice presents itself.
3907
+ /** Where the choice's own surface ends.
3854
3908
 
3855
- - `plain` is the default and is never written: a box beside its words,
3909
+ The question `separation` asks everywhere else, asked of one option, so it
3910
+ is that word: what these values pick is a surface, and `plain` is already
3911
+ the registry's own word for the answer this family used it for. `Radio`
3912
+ takes the same three for the same reason.
3913
+
3914
+ - `plain` is the resting one and is never written: a box beside its words,
3856
3915
  which is what a list of choices should be almost always.
3857
- - `card` puts it in a bounded surface, for options that need room to
3916
+ - `outlined` puts it in a bounded surface, for options that need room to
3858
3917
  explain themselves: a description, an icon, a price. It is the half a
3859
3918
  `data-card` link cannot do, because a link reports no value and belongs
3860
3919
  to no group, so a card that is genuinely an answer has to be this.
3861
-
3862
- The box stays in both. A card whose only marker was its own border would
3863
- ask a reader to compare surfaces across a row to find the answer, and would
3864
- leave nothing for a high-contrast display. */
3865
- "prop:variant"?: (HelixCheckbox["variant"]) | undefined;
3920
+ - `filled` is that same card on a ground of its own with no edge, which is
3921
+ what a column of options wants where a hairline around every one of them
3922
+ is a grid of lines rather than a set of answers.
3923
+
3924
+ **`elevated` is the one value of the axis this family does not take.** A
3925
+ raised choice competes with a dialog: the top layer is where a thing that
3926
+ interrupts you lives, and an option in a form is not one of those.
3927
+
3928
+ The box stays in all of them. A card whose only marker was its own border
3929
+ would ask a reader to compare surfaces across a row to find the answer, and
3930
+ would leave nothing for a high-contrast display. */
3931
+ "prop:separation"?: (HelixCheckbox["separation"]) | undefined;
3866
3932
  /** Whether the control is checked.
3867
3933
 
3868
3934
  One property rather than two. Writing always applies;
@@ -6896,9 +6962,12 @@ the end edge instead, with the label on the start one, and in figures of one
6896
6962
  width so a column of numbers lines up by its digits. Only with
6897
6963
  `direction="row"`: stacked, a label and its value share one edge already.
6898
6964
 
6899
- Flex's word for the same thing, and a grid rather than a flex row
6900
- underneath, so the labels still share one column while the values share an
6901
- end. */
6965
+ Flex's value for the same idea, under a shorter name than Flex's own:
6966
+ there it is `justify-content`, the CSS property it sets, and here the
6967
+ underlying layout is a grid handing an edge down to each item as a custom
6968
+ property, so the labels still share one column while the values share an
6969
+ end. Naming a property this does not set after it would be the wrong kind
6970
+ of precision. */
6902
6971
  justify?: (HelixDescriptionList["justify"]) | undefined;
6903
6972
  /** How wide the list is.
6904
6973
 
@@ -6934,9 +7003,12 @@ the end edge instead, with the label on the start one, and in figures of one
6934
7003
  width so a column of numbers lines up by its digits. Only with
6935
7004
  `direction="row"`: stacked, a label and its value share one edge already.
6936
7005
 
6937
- Flex's word for the same thing, and a grid rather than a flex row
6938
- underneath, so the labels still share one column while the values share an
6939
- end. */
7006
+ Flex's value for the same idea, under a shorter name than Flex's own:
7007
+ there it is `justify-content`, the CSS property it sets, and here the
7008
+ underlying layout is a grid handing an edge down to each item as a custom
7009
+ property, so the labels still share one column while the values share an
7010
+ end. Naming a property this does not set after it would be the wrong kind
7011
+ of precision. */
6940
7012
  "prop:justify"?: (HelixDescriptionList["justify"]) | undefined;
6941
7013
  /** How wide the list is.
6942
7014
 
@@ -6979,17 +7051,6 @@ export type HelixDialogHelixBeforeOpenElementEvent =
6979
7051
  HelixDialogElementEvent<HelixBeforeOpenEvent>;
6980
7052
 
6981
7053
  export type HelixDialogProps = {
6982
- /** Which way the panel's contents read.
6983
-
6984
- One property for the whole panel rather than one per region. The regions are
6985
- never mixed in practice: a dialog that asks a short question centers its
6986
- mark, its title, its sentence and its buttons together, and a dialog holding
6987
- a form runs all four from the start. Three properties would be three ways to
6988
- write the same two arrangements, and a fourth way to get one of them wrong.
6989
-
6990
- Unset is `start` and stays unset, so a reflected default cannot appear on a
6991
- host whose server output never had it. */
6992
- align?: (HelixDialog["align"]) | undefined;
6993
7054
  /** How wide the panel is allowed to be.
6994
7055
 
6995
7056
  Steps rather than a number, because a dialog's width is a fact about what is
@@ -7006,10 +7067,48 @@ reflects, and a default would put `size="md"` into markup no consumer wrote.
7006
7067
  rule's own test is whether two of them sitting together could legitimately
7007
7068
  differ, and it is answering "a ragged row is unwritable". Two dialogs never
7008
7069
  sit together. One is on screen at a time, in the top layer, and it is the
7009
- region rather than a control in one, which is the same reason `Avatar` and
7010
- `Spinner` keep theirs. Not `appearance`, which says how a thing reads
7011
- rather than how wide it is. */
7070
+ region rather than a control in one, which is the other half of the axis's
7071
+ domain: the rest of it is pictures, which are not controls either. Not
7072
+ `appearance`, which says how a thing reads rather than how wide it is. */
7012
7073
  size?: (HelixDialog["size"]) | undefined;
7074
+ /** Which way the panel's contents read.
7075
+
7076
+ **Text alignment, and the name says so.** `Flex` and `Grid` ask the CSS
7077
+ box-alignment question, where things sit in a container, and they are named
7078
+ for the properties they mirror; this one is `text-align` on a panel of
7079
+ prose, and `Table.Column` answers the same question under the same name.
7080
+ One word for both questions is how a consumer who learned it on a layout
7081
+ writes it here and gets no error, a value a component does not have leaving
7082
+ the default in place and looking deliberate.
7083
+
7084
+ One property for the whole panel rather than one per region. The regions are
7085
+ never mixed in practice: a dialog that asks a short question centers its
7086
+ mark, its title, its sentence and its buttons together, and a dialog holding
7087
+ a form runs all four from the start. Three properties would be three ways to
7088
+ write the same two arrangements, and a fourth way to get one of them wrong.
7089
+
7090
+ Unset is `start` and stays unset, so a reflected default cannot appear on a
7091
+ host whose server output never had it. */
7092
+ "text-align"?: (HelixDialog["textAlign"]) | undefined;
7093
+ /** Which way the panel's contents read.
7094
+
7095
+ **Text alignment, and the name says so.** `Flex` and `Grid` ask the CSS
7096
+ box-alignment question, where things sit in a container, and they are named
7097
+ for the properties they mirror; this one is `text-align` on a panel of
7098
+ prose, and `Table.Column` answers the same question under the same name.
7099
+ One word for both questions is how a consumer who learned it on a layout
7100
+ writes it here and gets no error, a value a component does not have leaving
7101
+ the default in place and looking deliberate.
7102
+
7103
+ One property for the whole panel rather than one per region. The regions are
7104
+ never mixed in practice: a dialog that asks a short question centers its
7105
+ mark, its title, its sentence and its buttons together, and a dialog holding
7106
+ a form runs all four from the start. Three properties would be three ways to
7107
+ write the same two arrangements, and a fourth way to get one of them wrong.
7108
+
7109
+ Unset is `start` and stays unset, so a reflected default cannot appear on a
7110
+ host whose server output never had it. */
7111
+ textAlign?: (HelixDialog["textAlign"]) | undefined;
7013
7112
  /** Whether the element is open.
7014
7113
 
7015
7114
  One property, not two, so `dialog.open` answers the question anyone
@@ -7084,17 +7183,6 @@ survives to it and a consumer reading one back gets what they wrote. */
7084
7183
  };
7085
7184
 
7086
7185
  export type HelixDialogSolidJsProps = {
7087
- /** Which way the panel's contents read.
7088
-
7089
- One property for the whole panel rather than one per region. The regions are
7090
- never mixed in practice: a dialog that asks a short question centers its
7091
- mark, its title, its sentence and its buttons together, and a dialog holding
7092
- a form runs all four from the start. Three properties would be three ways to
7093
- write the same two arrangements, and a fourth way to get one of them wrong.
7094
-
7095
- Unset is `start` and stays unset, so a reflected default cannot appear on a
7096
- host whose server output never had it. */
7097
- "prop:align"?: (HelixDialog["align"]) | undefined;
7098
7186
  /** How wide the panel is allowed to be.
7099
7187
 
7100
7188
  Steps rather than a number, because a dialog's width is a fact about what is
@@ -7111,10 +7199,48 @@ reflects, and a default would put `size="md"` into markup no consumer wrote.
7111
7199
  rule's own test is whether two of them sitting together could legitimately
7112
7200
  differ, and it is answering "a ragged row is unwritable". Two dialogs never
7113
7201
  sit together. One is on screen at a time, in the top layer, and it is the
7114
- region rather than a control in one, which is the same reason `Avatar` and
7115
- `Spinner` keep theirs. Not `appearance`, which says how a thing reads
7116
- rather than how wide it is. */
7202
+ region rather than a control in one, which is the other half of the axis's
7203
+ domain: the rest of it is pictures, which are not controls either. Not
7204
+ `appearance`, which says how a thing reads rather than how wide it is. */
7117
7205
  "prop:size"?: (HelixDialog["size"]) | undefined;
7206
+ /** Which way the panel's contents read.
7207
+
7208
+ **Text alignment, and the name says so.** `Flex` and `Grid` ask the CSS
7209
+ box-alignment question, where things sit in a container, and they are named
7210
+ for the properties they mirror; this one is `text-align` on a panel of
7211
+ prose, and `Table.Column` answers the same question under the same name.
7212
+ One word for both questions is how a consumer who learned it on a layout
7213
+ writes it here and gets no error, a value a component does not have leaving
7214
+ the default in place and looking deliberate.
7215
+
7216
+ One property for the whole panel rather than one per region. The regions are
7217
+ never mixed in practice: a dialog that asks a short question centers its
7218
+ mark, its title, its sentence and its buttons together, and a dialog holding
7219
+ a form runs all four from the start. Three properties would be three ways to
7220
+ write the same two arrangements, and a fourth way to get one of them wrong.
7221
+
7222
+ Unset is `start` and stays unset, so a reflected default cannot appear on a
7223
+ host whose server output never had it. */
7224
+ "attr:text-align"?: (HelixDialog["textAlign"]) | undefined;
7225
+ /** Which way the panel's contents read.
7226
+
7227
+ **Text alignment, and the name says so.** `Flex` and `Grid` ask the CSS
7228
+ box-alignment question, where things sit in a container, and they are named
7229
+ for the properties they mirror; this one is `text-align` on a panel of
7230
+ prose, and `Table.Column` answers the same question under the same name.
7231
+ One word for both questions is how a consumer who learned it on a layout
7232
+ writes it here and gets no error, a value a component does not have leaving
7233
+ the default in place and looking deliberate.
7234
+
7235
+ One property for the whole panel rather than one per region. The regions are
7236
+ never mixed in practice: a dialog that asks a short question centers its
7237
+ mark, its title, its sentence and its buttons together, and a dialog holding
7238
+ a form runs all four from the start. Three properties would be three ways to
7239
+ write the same two arrangements, and a fourth way to get one of them wrong.
7240
+
7241
+ Unset is `start` and stays unset, so a reflected default cannot appear on a
7242
+ host whose server output never had it. */
7243
+ "prop:textAlign"?: (HelixDialog["textAlign"]) | undefined;
7118
7244
  /** Whether the element is open.
7119
7245
 
7120
7246
  One property, not two, so `dialog.open` answers the question anyone
@@ -8566,31 +8692,115 @@ Here rather than on each control. */
8566
8692
  };
8567
8693
 
8568
8694
  export type HelixFlexProps = {
8569
- /** Alignment across the direction. */
8570
- align?: (HelixFlex["align"]) | undefined;
8695
+ /** Alignment across the direction, which is `align-items`.
8696
+
8697
+ **Named for the CSS property it sets, because it is that property.** A flex
8698
+ container is the one place where the box-alignment words are already the
8699
+ reader's, so a shorter name would be a second vocabulary for something they
8700
+ can already say, and `align` alone is the word four other families use for
8701
+ four other questions: `Dialog` and `Table.Column` mean `text-align` by it.
8702
+
8703
+ **It also keeps the name out of the browser's way.** `align` is a legacy
8704
+ HTML presentational attribute mapped to `text-align` on any element that
8705
+ carries one, this one included: measured, an invented tag with
8706
+ `align="center"` computes centered text too, so it is nothing to do with
8707
+ being a known element. A row that carried it therefore centered the text
8708
+ inside every field in it, through a hint no rule here declares and none can
8709
+ see, and the fix is a name the platform has no opinion about rather than a
8710
+ guard against the hint. */
8711
+ "align-items"?: (HelixFlex["alignItems"]) | undefined;
8712
+ /** Alignment across the direction, which is `align-items`.
8713
+
8714
+ **Named for the CSS property it sets, because it is that property.** A flex
8715
+ container is the one place where the box-alignment words are already the
8716
+ reader's, so a shorter name would be a second vocabulary for something they
8717
+ can already say, and `align` alone is the word four other families use for
8718
+ four other questions: `Dialog` and `Table.Column` mean `text-align` by it.
8719
+
8720
+ **It also keeps the name out of the browser's way.** `align` is a legacy
8721
+ HTML presentational attribute mapped to `text-align` on any element that
8722
+ carries one, this one included: measured, an invented tag with
8723
+ `align="center"` computes centered text too, so it is nothing to do with
8724
+ being a known element. A row that carried it therefore centered the text
8725
+ inside every field in it, through a hint no rule here declares and none can
8726
+ see, and the fix is a name the platform has no opinion about rather than a
8727
+ guard against the hint. */
8728
+ alignItems?: (HelixFlex["alignItems"]) | undefined;
8571
8729
  /** Whether items run across or down. */
8572
8730
  direction?: (HelixFlex["direction"]) | undefined;
8573
8731
  /** Space between items, named on the space scale. */
8574
8732
  gap?: (HelixFlex["gap"]) | undefined;
8575
8733
  /** Flows with surrounding text instead of taking the full width. */
8576
8734
  inline?: (HelixFlex["inline"]) | undefined;
8577
- /** Distribution along the direction. */
8578
- justify?: (HelixFlex["justify"]) | undefined;
8735
+ /** Distribution along the direction, which is `justify-content`.
8736
+
8737
+ Named for the property it sets, the way `alignItems` is. `between` and
8738
+ `around` drop the `space-` prefix and nothing else does, because those two
8739
+ are the only values whose CSS spelling is two words. */
8740
+ "justify-content"?: (HelixFlex["justifyContent"]) | undefined;
8741
+ /** Distribution along the direction, which is `justify-content`.
8742
+
8743
+ Named for the property it sets, the way `alignItems` is. `between` and
8744
+ `around` drop the `space-` prefix and nothing else does, because those two
8745
+ are the only values whose CSS spelling is two words. */
8746
+ justifyContent?: (HelixFlex["justifyContent"]) | undefined;
8579
8747
  /** Whether items wrap onto more lines. */
8580
8748
  wrap?: (HelixFlex["wrap"]) | undefined;
8581
8749
  };
8582
8750
 
8583
8751
  export type HelixFlexSolidJsProps = {
8584
- /** Alignment across the direction. */
8585
- "prop:align"?: (HelixFlex["align"]) | undefined;
8752
+ /** Alignment across the direction, which is `align-items`.
8753
+
8754
+ **Named for the CSS property it sets, because it is that property.** A flex
8755
+ container is the one place where the box-alignment words are already the
8756
+ reader's, so a shorter name would be a second vocabulary for something they
8757
+ can already say, and `align` alone is the word four other families use for
8758
+ four other questions: `Dialog` and `Table.Column` mean `text-align` by it.
8759
+
8760
+ **It also keeps the name out of the browser's way.** `align` is a legacy
8761
+ HTML presentational attribute mapped to `text-align` on any element that
8762
+ carries one, this one included: measured, an invented tag with
8763
+ `align="center"` computes centered text too, so it is nothing to do with
8764
+ being a known element. A row that carried it therefore centered the text
8765
+ inside every field in it, through a hint no rule here declares and none can
8766
+ see, and the fix is a name the platform has no opinion about rather than a
8767
+ guard against the hint. */
8768
+ "attr:align-items"?: (HelixFlex["alignItems"]) | undefined;
8769
+ /** Alignment across the direction, which is `align-items`.
8770
+
8771
+ **Named for the CSS property it sets, because it is that property.** A flex
8772
+ container is the one place where the box-alignment words are already the
8773
+ reader's, so a shorter name would be a second vocabulary for something they
8774
+ can already say, and `align` alone is the word four other families use for
8775
+ four other questions: `Dialog` and `Table.Column` mean `text-align` by it.
8776
+
8777
+ **It also keeps the name out of the browser's way.** `align` is a legacy
8778
+ HTML presentational attribute mapped to `text-align` on any element that
8779
+ carries one, this one included: measured, an invented tag with
8780
+ `align="center"` computes centered text too, so it is nothing to do with
8781
+ being a known element. A row that carried it therefore centered the text
8782
+ inside every field in it, through a hint no rule here declares and none can
8783
+ see, and the fix is a name the platform has no opinion about rather than a
8784
+ guard against the hint. */
8785
+ "prop:alignItems"?: (HelixFlex["alignItems"]) | undefined;
8586
8786
  /** Whether items run across or down. */
8587
8787
  "prop:direction"?: (HelixFlex["direction"]) | undefined;
8588
8788
  /** Space between items, named on the space scale. */
8589
8789
  "prop:gap"?: (HelixFlex["gap"]) | undefined;
8590
8790
  /** Flows with surrounding text instead of taking the full width. */
8591
8791
  "prop:inline"?: (HelixFlex["inline"]) | undefined;
8592
- /** Distribution along the direction. */
8593
- "prop:justify"?: (HelixFlex["justify"]) | undefined;
8792
+ /** Distribution along the direction, which is `justify-content`.
8793
+
8794
+ Named for the property it sets, the way `alignItems` is. `between` and
8795
+ `around` drop the `space-` prefix and nothing else does, because those two
8796
+ are the only values whose CSS spelling is two words. */
8797
+ "attr:justify-content"?: (HelixFlex["justifyContent"]) | undefined;
8798
+ /** Distribution along the direction, which is `justify-content`.
8799
+
8800
+ Named for the property it sets, the way `alignItems` is. `between` and
8801
+ `around` drop the `space-` prefix and nothing else does, because those two
8802
+ are the only values whose CSS spelling is two words. */
8803
+ "prop:justifyContent"?: (HelixFlex["justifyContent"]) | undefined;
8594
8804
  /** Whether items wrap onto more lines. */
8595
8805
  "prop:wrap"?: (HelixFlex["wrap"]) | undefined;
8596
8806
 
@@ -8716,8 +8926,34 @@ Empty is the runtime's own. */
8716
8926
  };
8717
8927
 
8718
8928
  export type HelixGridProps = {
8719
- /** Alignment of each cell within its row. */
8720
- align?: (HelixGrid["align"]) | undefined;
8929
+ /** Alignment of each cell within its row, which is `align-items`.
8930
+
8931
+ **Named for the CSS property it sets**, the way `Flex` is, and the same
8932
+ property on a grid: it places every cell in its row's track rather than
8933
+ placing the tracks. No `baseline`, which `Flex` offers, because cells in a
8934
+ row of a grid are boxes of unrelated content and lining their first lines
8935
+ up is a thing a reader asks for between siblings in a row, not between
8936
+ cells in a table of them.
8937
+
8938
+ There is no `justifyContent` here for the same reason: the tracks are
8939
+ `1fr`, so they already fill the row and there is nothing left over to
8940
+ distribute. `columns`, `min` and `--grid-columns` are how a grid says how
8941
+ wide its tracks are. */
8942
+ "align-items"?: (HelixGrid["alignItems"]) | undefined;
8943
+ /** Alignment of each cell within its row, which is `align-items`.
8944
+
8945
+ **Named for the CSS property it sets**, the way `Flex` is, and the same
8946
+ property on a grid: it places every cell in its row's track rather than
8947
+ placing the tracks. No `baseline`, which `Flex` offers, because cells in a
8948
+ row of a grid are boxes of unrelated content and lining their first lines
8949
+ up is a thing a reader asks for between siblings in a row, not between
8950
+ cells in a table of them.
8951
+
8952
+ There is no `justifyContent` here for the same reason: the tracks are
8953
+ `1fr`, so they already fill the row and there is nothing left over to
8954
+ distribute. `columns`, `min` and `--grid-columns` are how a grid says how
8955
+ wide its tracks are. */
8956
+ alignItems?: (HelixGrid["alignItems"]) | undefined;
8721
8957
  /** Fixed number of equal columns. */
8722
8958
  columns?: (HelixGrid["columns"]) | undefined;
8723
8959
  /** Space between cells, named on the space scale. */
@@ -8730,8 +8966,34 @@ is two intentions in one element. */
8730
8966
  };
8731
8967
 
8732
8968
  export type HelixGridSolidJsProps = {
8733
- /** Alignment of each cell within its row. */
8734
- "prop:align"?: (HelixGrid["align"]) | undefined;
8969
+ /** Alignment of each cell within its row, which is `align-items`.
8970
+
8971
+ **Named for the CSS property it sets**, the way `Flex` is, and the same
8972
+ property on a grid: it places every cell in its row's track rather than
8973
+ placing the tracks. No `baseline`, which `Flex` offers, because cells in a
8974
+ row of a grid are boxes of unrelated content and lining their first lines
8975
+ up is a thing a reader asks for between siblings in a row, not between
8976
+ cells in a table of them.
8977
+
8978
+ There is no `justifyContent` here for the same reason: the tracks are
8979
+ `1fr`, so they already fill the row and there is nothing left over to
8980
+ distribute. `columns`, `min` and `--grid-columns` are how a grid says how
8981
+ wide its tracks are. */
8982
+ "attr:align-items"?: (HelixGrid["alignItems"]) | undefined;
8983
+ /** Alignment of each cell within its row, which is `align-items`.
8984
+
8985
+ **Named for the CSS property it sets**, the way `Flex` is, and the same
8986
+ property on a grid: it places every cell in its row's track rather than
8987
+ placing the tracks. No `baseline`, which `Flex` offers, because cells in a
8988
+ row of a grid are boxes of unrelated content and lining their first lines
8989
+ up is a thing a reader asks for between siblings in a row, not between
8990
+ cells in a table of them.
8991
+
8992
+ There is no `justifyContent` here for the same reason: the tracks are
8993
+ `1fr`, so they already fill the row and there is nothing left over to
8994
+ distribute. `columns`, `min` and `--grid-columns` are how a grid says how
8995
+ wide its tracks are. */
8996
+ "prop:alignItems"?: (HelixGrid["alignItems"]) | undefined;
8735
8997
  /** Fixed number of equal columns. */
8736
8998
  "prop:columns"?: (HelixGrid["columns"]) | undefined;
8737
8999
  /** Space between cells, named on the space scale. */
@@ -9402,11 +9664,12 @@ export type HelixImageElementEvent<E = Event> = TypedEvent<HelixImage, E>;
9402
9664
  export type HelixImageProps = {
9403
9665
  /** Whether the corners are cut.
9404
9666
 
9405
- A boolean rather than a radius, because the radius is a token and the
9406
- question a consumer is answering is whether this picture is a card's
9407
- surface or a page's. `--image-radius` moves it for the case that is
9408
- neither. */
9409
- rounded?: (HelixImage["rounded"]) | undefined;
9667
+ The axis and not a boolean, because `rounded` is a registered word and a
9668
+ private spelling of a registry question is what `appearance` was retired
9669
+ for. Not a radius either: the radius is a token and the question a consumer
9670
+ is answering is whether this picture is a card's surface or a page's.
9671
+ `--image-radius` moves it for the case that is neither. */
9672
+ shape?: (HelixImage["shape"]) | undefined;
9410
9673
  /** What it shows, for a reader who cannot see it.
9411
9674
 
9412
9675
  Empty is a real answer and means decoration. Omitting the attribute is not
@@ -9485,11 +9748,12 @@ resting state of a mirror is the attribute's absence. */
9485
9748
  export type HelixImageSolidJsProps = {
9486
9749
  /** Whether the corners are cut.
9487
9750
 
9488
- A boolean rather than a radius, because the radius is a token and the
9489
- question a consumer is answering is whether this picture is a card's
9490
- surface or a page's. `--image-radius` moves it for the case that is
9491
- neither. */
9492
- "prop:rounded"?: (HelixImage["rounded"]) | undefined;
9751
+ The axis and not a boolean, because `rounded` is a registered word and a
9752
+ private spelling of a registry question is what `appearance` was retired
9753
+ for. Not a radius either: the radius is a token and the question a consumer
9754
+ is answering is whether this picture is a card's surface or a page's.
9755
+ `--image-radius` moves it for the case that is neither. */
9756
+ "prop:shape"?: (HelixImage["shape"]) | undefined;
9493
9757
  /** What it shows, for a reader who cannot see it.
9494
9758
 
9495
9759
  Empty is a real answer and means decoration. Omitting the attribute is not
@@ -10929,7 +11193,7 @@ which React reports as a mismatch and answers by rebuilding the subtree. The
10929
11193
  narrow exception the server specs describe covers a mirror that can only
10930
11194
  become true long after hydration, and a viewport measured before the first
10931
11195
  paint is the opposite case. See `MixinControllerOpen` on `open`. */
10932
- "full-below"?: (HelixMegamenu["fullBelow"] | `${number}`) | undefined;
11196
+ "band-below"?: (HelixMegamenu["bandBelow"] | `${number}`) | undefined;
10933
11197
  /** The width, in pixels, under which a card becomes a band. Zero never does.
10934
11198
 
10935
11199
  A card is a panel hung off one word, and there is no room to hang anything
@@ -10953,7 +11217,7 @@ which React reports as a mismatch and answers by rebuilding the subtree. The
10953
11217
  narrow exception the server specs describe covers a mirror that can only
10954
11218
  become true long after hydration, and a viewport measured before the first
10955
11219
  paint is the opposite case. See `MixinControllerOpen` on `open`. */
10956
- fullBelow?: (HelixMegamenu["fullBelow"]) | undefined;
11220
+ bandBelow?: (HelixMegamenu["bandBelow"]) | undefined;
10957
11221
  /** The section's name, which names the default trigger and the panel. */
10958
11222
  label?: (HelixMegamenu["label"]) | undefined;
10959
11223
  /** Whether hovering the trigger opens the panel, or only a press does.
@@ -10973,16 +11237,23 @@ heavy enough that opening it on the way past is rude. */
10973
11237
  /** Whether the panel is a card under the trigger or a band across the page.
10974
11238
 
10975
11239
  The resting one is the card, hanging off the trigger and as wide as it
10976
- needs to be. `full` is the other shape navigations use: a band from edge to
11240
+ needs to be. `band` is the other shape navigations use: a run from edge to
10977
11241
  edge under the header, with its contents held to the page's own measure, so
10978
11242
  a set of destinations too wide to sit under one word gets the whole width
10979
11243
  to lay out in.
10980
11244
 
10981
- It changes where the panel goes as well as how it looks, which is why this
10982
- tier knows about it at all: a band spans the viewport, so there is nothing
10983
- to measure it against and nothing to flip or shift to, and the placing pass
10984
- is told not to run. Everything else the popover gives, the top layer and
10985
- the dismissal, is exactly what such a band needs. */
11245
+ **A band and not a width, which is why the word is not `full`.** It changes
11246
+ where the panel goes as well as how wide it is, which is why this tier
11247
+ knows about it at all: a band spans the viewport, so there is nothing to
11248
+ measure it against and nothing to flip or shift to, and the placing pass is
11249
+ told not to run. Everything else the popover gives, the top layer and the
11250
+ dismissal, is exactly what such a band needs. `full` is the registry's word
11251
+ for a width, and `Button` and `Dialog` are the two families answering that
11252
+ question; borrowing it here would put a third meaning on it.
11253
+
11254
+ `variant` and not an axis, for the reason the registry gives: a card under
11255
+ a word and a band under a header are two arrangements this family has, and
11256
+ no other family is being asked the same question. */
10986
11257
  variant?: (HelixMegamenu["variant"]) | undefined;
10987
11258
 
10988
11259
  /** Fired before it closes, and cancelable. */
@@ -11036,7 +11307,7 @@ which React reports as a mismatch and answers by rebuilding the subtree. The
11036
11307
  narrow exception the server specs describe covers a mirror that can only
11037
11308
  become true long after hydration, and a viewport measured before the first
11038
11309
  paint is the opposite case. See `MixinControllerOpen` on `open`. */
11039
- "attr:full-below"?: (HelixMegamenu["fullBelow"] | `${number}`) | undefined;
11310
+ "attr:band-below"?: (HelixMegamenu["bandBelow"] | `${number}`) | undefined;
11040
11311
  /** The width, in pixels, under which a card becomes a band. Zero never does.
11041
11312
 
11042
11313
  A card is a panel hung off one word, and there is no room to hang anything
@@ -11060,7 +11331,7 @@ which React reports as a mismatch and answers by rebuilding the subtree. The
11060
11331
  narrow exception the server specs describe covers a mirror that can only
11061
11332
  become true long after hydration, and a viewport measured before the first
11062
11333
  paint is the opposite case. See `MixinControllerOpen` on `open`. */
11063
- "prop:fullBelow"?: (HelixMegamenu["fullBelow"]) | undefined;
11334
+ "prop:bandBelow"?: (HelixMegamenu["bandBelow"]) | undefined;
11064
11335
  /** The section's name, which names the default trigger and the panel. */
11065
11336
  "prop:label"?: (HelixMegamenu["label"]) | undefined;
11066
11337
  /** Whether hovering the trigger opens the panel, or only a press does.
@@ -11080,16 +11351,23 @@ heavy enough that opening it on the way past is rude. */
11080
11351
  /** Whether the panel is a card under the trigger or a band across the page.
11081
11352
 
11082
11353
  The resting one is the card, hanging off the trigger and as wide as it
11083
- needs to be. `full` is the other shape navigations use: a band from edge to
11354
+ needs to be. `band` is the other shape navigations use: a run from edge to
11084
11355
  edge under the header, with its contents held to the page's own measure, so
11085
11356
  a set of destinations too wide to sit under one word gets the whole width
11086
11357
  to lay out in.
11087
11358
 
11088
- It changes where the panel goes as well as how it looks, which is why this
11089
- tier knows about it at all: a band spans the viewport, so there is nothing
11090
- to measure it against and nothing to flip or shift to, and the placing pass
11091
- is told not to run. Everything else the popover gives, the top layer and
11092
- the dismissal, is exactly what such a band needs. */
11359
+ **A band and not a width, which is why the word is not `full`.** It changes
11360
+ where the panel goes as well as how wide it is, which is why this tier
11361
+ knows about it at all: a band spans the viewport, so there is nothing to
11362
+ measure it against and nothing to flip or shift to, and the placing pass is
11363
+ told not to run. Everything else the popover gives, the top layer and the
11364
+ dismissal, is exactly what such a band needs. `full` is the registry's word
11365
+ for a width, and `Button` and `Dialog` are the two families answering that
11366
+ question; borrowing it here would put a third meaning on it.
11367
+
11368
+ `variant` and not an axis, for the reason the registry gives: a card under
11369
+ a word and a band under a header are two arrangements this family has, and
11370
+ no other family is being asked the same question. */
11093
11371
  "prop:variant"?: (HelixMegamenu["variant"]) | undefined;
11094
11372
  /** Fired before it closes, and cancelable. */
11095
11373
  "on:helix-before-close"?: ((
@@ -12620,6 +12898,13 @@ the name of the tool being run, or the file being read. */
12620
12898
  label?: (HelixOrb["label"]) | undefined;
12621
12899
  /** Diameter relative to the surrounding text.
12622
12900
 
12901
+ **`Loader`'s three steps, because the two are swapped for each other.** An
12902
+ orb and a spinner are the same job drawn differently, a wait a reader is
12903
+ looking at, and a product that replaces one with the other should not find
12904
+ that a step it was writing has stopped existing. `md` is the resting one
12905
+ and selects nothing, landing on the base rule the way a written resting
12906
+ value does everywhere else.
12907
+
12623
12908
  Reflected because the stylesheet selects on it. The mesh is chosen from the
12624
12909
  rendered box rather than from this, so `--orb-size` and a consumer's own
12625
12910
  `inline-size` get the same treatment as the named steps. */
@@ -12646,6 +12931,13 @@ the name of the tool being run, or the file being read. */
12646
12931
  "prop:label"?: (HelixOrb["label"]) | undefined;
12647
12932
  /** Diameter relative to the surrounding text.
12648
12933
 
12934
+ **`Loader`'s three steps, because the two are swapped for each other.** An
12935
+ orb and a spinner are the same job drawn differently, a wait a reader is
12936
+ looking at, and a product that replaces one with the other should not find
12937
+ that a step it was writing has stopped existing. `md` is the resting one
12938
+ and selects nothing, landing on the base rule the way a written resting
12939
+ value does everywhere else.
12940
+
12649
12941
  Reflected because the stylesheet selects on it. The mesh is chosen from the
12650
12942
  rendered box rather than from this, so `--orb-size` and a consumer's own
12651
12943
  `inline-size` get the same treatment as the named steps. */
@@ -13950,9 +14242,9 @@ export type HelixRadioProps = {
13950
14242
  Unnecessary under `chip`, which has no room for a circle beside its mark
13951
14243
  and hides it already.
13952
14244
 
13953
- `card` only, and it is a graphic that goes rather than a radio: the control
13954
- in the shadow root is untouched, so the row is still focusable, still
13955
- reported to a screen reader, and still the thing a form submits.
14245
+ A separated choice only, and it is a graphic that goes rather than a radio:
14246
+ the control in the shadow root is untouched, so the row is still focusable,
14247
+ still reported to a screen reader, and still the thing a form submits.
13956
14248
 
13957
14249
  Safe because the card already carries the answer in its surface, a raised
13958
14250
  fill inside a primary edge and a three-pixel ring of it. Without that ring
@@ -13967,9 +14259,9 @@ card with no box loses the only thing that says you may pick several. */
13967
14259
  Unnecessary under `chip`, which has no room for a circle beside its mark
13968
14260
  and hides it already.
13969
14261
 
13970
- `card` only, and it is a graphic that goes rather than a radio: the control
13971
- in the shadow root is untouched, so the row is still focusable, still
13972
- reported to a screen reader, and still the thing a form submits.
14262
+ A separated choice only, and it is a graphic that goes rather than a radio:
14263
+ the control in the shadow root is untouched, so the row is still focusable,
14264
+ still reported to a screen reader, and still the thing a form submits.
13973
14265
 
13974
14266
  Safe because the card already carries the answer in its surface, a raised
13975
14267
  fill inside a primary edge and a three-pixel ring of it. Without that ring
@@ -13979,21 +14271,41 @@ Not on `Checkbox`, deliberately. A radio card with no circle is still
13979
14271
  unmistakably one-of-many because its siblings behave that way; a checkbox
13980
14272
  card with no box loses the only thing that says you may pick several. */
13981
14273
  hideControl?: (HelixRadio["hideControl"]) | undefined;
13982
- /** How the choice presents itself.
14274
+ /** Where the choice's own surface ends.
13983
14275
 
13984
- - `plain` is the default and is never written: a circle beside its words,
13985
- which is what a list of choices should be almost always.
13986
- - `card` puts it in a bounded surface, for options that need room to
14276
+ The question `separation` asks everywhere else, asked of one option, so it
14277
+ is that word: what these values pick is a surface, and `plain` is already
14278
+ the registry's own word for the answer this family used it for.
14279
+
14280
+ - `plain` is the resting one and is never written: a circle beside its
14281
+ words, which is what a list of choices should be almost always.
14282
+ - `outlined` puts it in a bounded surface, for options that need room to
13987
14283
  explain themselves: a description, an icon, a price. It is the half a
13988
14284
  `data-card` link cannot do, because a link reports no value and belongs
13989
14285
  to no group, so a card that is genuinely an answer has to be this.
13990
- - `chip` is the answer as its own small surface, for a row of short
13991
- choices read at a glance. It hides the circle, the surface being the
13992
- whole mark, which is why `hide-control` says it is unnecessary here.
13993
-
13994
- The circle stays in both. A card whose only marker was its own border would
13995
- ask a reader to compare surfaces across a row to find the answer, and would
13996
- leave nothing for a high-contrast display. */
14286
+ - `filled` is that same card on a ground of its own with no edge, which is
14287
+ what a column of choices wants where a hairline around every one of them
14288
+ is a grid of lines rather than a set of answers.
14289
+
14290
+ **`elevated` is the one value of the axis this family does not take.** A
14291
+ raised choice competes with a dialog: the top layer is where a thing that
14292
+ interrupts you lives, and an option in a form is not one of those, so a
14293
+ column of lifted cards reads as a stack of floating things none of which is
14294
+ settled.
14295
+
14296
+ The circle stays in all of them. A card whose only marker was its own
14297
+ border would ask a reader to compare surfaces across a row to find the
14298
+ answer, and would leave nothing for a high-contrast display. */
14299
+ separation?: (HelixRadio["separation"]) | undefined;
14300
+ /** The answer as its own small surface, for a row of short choices read at a
14301
+ glance.
14302
+
14303
+ **Not a separation, which is why it is still `variant`.** The other values
14304
+ pick where a surface ends around a row that keeps its circle and its words;
14305
+ a chip has neither. It hides the circle, the surface being the whole mark,
14306
+ which is why `hide-control` says it is unnecessary here, and it takes the
14307
+ words out of the flow to be the accessible name. That removes the
14308
+ distinction `separation` exists to make rather than answering it. */
13997
14309
  variant?: (HelixRadio["variant"]) | undefined;
13998
14310
  /** Whether this one can be chosen. */
13999
14311
  disabled?: (HelixRadio["disabled"]) | undefined;
@@ -14057,9 +14369,9 @@ export type HelixRadioSolidJsProps = {
14057
14369
  Unnecessary under `chip`, which has no room for a circle beside its mark
14058
14370
  and hides it already.
14059
14371
 
14060
- `card` only, and it is a graphic that goes rather than a radio: the control
14061
- in the shadow root is untouched, so the row is still focusable, still
14062
- reported to a screen reader, and still the thing a form submits.
14372
+ A separated choice only, and it is a graphic that goes rather than a radio:
14373
+ the control in the shadow root is untouched, so the row is still focusable,
14374
+ still reported to a screen reader, and still the thing a form submits.
14063
14375
 
14064
14376
  Safe because the card already carries the answer in its surface, a raised
14065
14377
  fill inside a primary edge and a three-pixel ring of it. Without that ring
@@ -14074,9 +14386,9 @@ card with no box loses the only thing that says you may pick several. */
14074
14386
  Unnecessary under `chip`, which has no room for a circle beside its mark
14075
14387
  and hides it already.
14076
14388
 
14077
- `card` only, and it is a graphic that goes rather than a radio: the control
14078
- in the shadow root is untouched, so the row is still focusable, still
14079
- reported to a screen reader, and still the thing a form submits.
14389
+ A separated choice only, and it is a graphic that goes rather than a radio:
14390
+ the control in the shadow root is untouched, so the row is still focusable,
14391
+ still reported to a screen reader, and still the thing a form submits.
14080
14392
 
14081
14393
  Safe because the card already carries the answer in its surface, a raised
14082
14394
  fill inside a primary edge and a three-pixel ring of it. Without that ring
@@ -14086,21 +14398,41 @@ Not on `Checkbox`, deliberately. A radio card with no circle is still
14086
14398
  unmistakably one-of-many because its siblings behave that way; a checkbox
14087
14399
  card with no box loses the only thing that says you may pick several. */
14088
14400
  "prop:hideControl"?: (HelixRadio["hideControl"]) | undefined;
14089
- /** How the choice presents itself.
14401
+ /** Where the choice's own surface ends.
14090
14402
 
14091
- - `plain` is the default and is never written: a circle beside its words,
14092
- which is what a list of choices should be almost always.
14093
- - `card` puts it in a bounded surface, for options that need room to
14403
+ The question `separation` asks everywhere else, asked of one option, so it
14404
+ is that word: what these values pick is a surface, and `plain` is already
14405
+ the registry's own word for the answer this family used it for.
14406
+
14407
+ - `plain` is the resting one and is never written: a circle beside its
14408
+ words, which is what a list of choices should be almost always.
14409
+ - `outlined` puts it in a bounded surface, for options that need room to
14094
14410
  explain themselves: a description, an icon, a price. It is the half a
14095
14411
  `data-card` link cannot do, because a link reports no value and belongs
14096
14412
  to no group, so a card that is genuinely an answer has to be this.
14097
- - `chip` is the answer as its own small surface, for a row of short
14098
- choices read at a glance. It hides the circle, the surface being the
14099
- whole mark, which is why `hide-control` says it is unnecessary here.
14100
-
14101
- The circle stays in both. A card whose only marker was its own border would
14102
- ask a reader to compare surfaces across a row to find the answer, and would
14103
- leave nothing for a high-contrast display. */
14413
+ - `filled` is that same card on a ground of its own with no edge, which is
14414
+ what a column of choices wants where a hairline around every one of them
14415
+ is a grid of lines rather than a set of answers.
14416
+
14417
+ **`elevated` is the one value of the axis this family does not take.** A
14418
+ raised choice competes with a dialog: the top layer is where a thing that
14419
+ interrupts you lives, and an option in a form is not one of those, so a
14420
+ column of lifted cards reads as a stack of floating things none of which is
14421
+ settled.
14422
+
14423
+ The circle stays in all of them. A card whose only marker was its own
14424
+ border would ask a reader to compare surfaces across a row to find the
14425
+ answer, and would leave nothing for a high-contrast display. */
14426
+ "prop:separation"?: (HelixRadio["separation"]) | undefined;
14427
+ /** The answer as its own small surface, for a row of short choices read at a
14428
+ glance.
14429
+
14430
+ **Not a separation, which is why it is still `variant`.** The other values
14431
+ pick where a surface ends around a row that keeps its circle and its words;
14432
+ a chip has neither. It hides the circle, the surface being the whole mark,
14433
+ which is why `hide-control` says it is unnecessary here, and it takes the
14434
+ words out of the flow to be the accessible name. That removes the
14435
+ distinction `separation` exists to make rather than answering it. */
14104
14436
  "prop:variant"?: (HelixRadio["variant"]) | undefined;
14105
14437
  /** Whether this one can be chosen. */
14106
14438
  "prop:disabled"?: (HelixRadio["disabled"]) | undefined;
@@ -14169,23 +14501,28 @@ export type HelixRatingHelixBeforeChangeElementEvent =
14169
14501
  HelixRatingElementEvent<HelixBeforeChangeEvent>;
14170
14502
 
14171
14503
  export type HelixRatingProps = {
14172
- /** Which mark the row is drawn with.
14173
-
14174
- `marks` is the star, and is what a rating means to most readers. `dots`
14175
- drops the glyph for a plain circle, which says how much rather than how
14176
- good: a star carries a judgment that a level of spice, a difficulty or a
14177
- confidence has not earned.
14178
-
14179
- Both are one shape repeated and clipped to the score, so halves work in
14180
- either, and both are only a choice of drawing. A scale whose marks are
14504
+ /** The geometry one mark is drawn to.
14505
+
14506
+ The registry's word, because the question is the registry's: `Avatar`,
14507
+ `Skeleton`, `IconButton`, `Meter` and `Progress` each ask what geometry
14508
+ their own thing is cut to under this name, and `dots` is already a value
14509
+ the axis holds. What is picked here is the outline of one mark and nothing
14510
+ else, which is a shape and not a component-specific choice.
14511
+
14512
+ `dots` drops the glyph for a plain circle, which says how much rather than
14513
+ how good: a star carries a judgment that a level of spice, a difficulty or
14514
+ a confidence has not earned. Either way it is one shape repeated and
14515
+ clipped to the score, so halves work in both. A scale whose marks are
14181
14516
  *different* drawings is a set of choices rather than a quantity: that is
14182
14517
  `Radio.Group`, whose options already carry a value and a name each.
14183
14518
 
14184
- **Undefaulted, because it reflects.** A default of `marks` writes
14185
- `variant="marks"` onto every server-rendered rating, which React holds no
14186
- prop for and reports as a hydration mismatch. The stylesheet names only
14187
- `dots`, so an unset one draws marks anyway. */
14188
- variant?: (HelixRating["variant"]) | undefined;
14519
+ **The star is the resting one and has no word**, which is the rule every
14520
+ axis follows and is also what this family needed anyway: it reflects, so a
14521
+ default would write the resting value onto every server-rendered rating,
14522
+ an attribute React holds no prop for and so a hydration mismatch for each
14523
+ one. The stylesheet names only `dots`, so an unset one draws the star by
14524
+ landing on the base rule. */
14525
+ shape?: (HelixRating["shape"]) | undefined;
14189
14526
  /** The value the markup declared, which is where a reset returns to. */
14190
14527
  "default-value"?: (HelixRating["defaultValue"]) | undefined;
14191
14528
  /** The value the markup declared, which is where a reset returns to. */
@@ -14343,23 +14680,28 @@ form would submit it. */
14343
14680
  };
14344
14681
 
14345
14682
  export type HelixRatingSolidJsProps = {
14346
- /** Which mark the row is drawn with.
14347
-
14348
- `marks` is the star, and is what a rating means to most readers. `dots`
14349
- drops the glyph for a plain circle, which says how much rather than how
14350
- good: a star carries a judgment that a level of spice, a difficulty or a
14351
- confidence has not earned.
14352
-
14353
- Both are one shape repeated and clipped to the score, so halves work in
14354
- either, and both are only a choice of drawing. A scale whose marks are
14683
+ /** The geometry one mark is drawn to.
14684
+
14685
+ The registry's word, because the question is the registry's: `Avatar`,
14686
+ `Skeleton`, `IconButton`, `Meter` and `Progress` each ask what geometry
14687
+ their own thing is cut to under this name, and `dots` is already a value
14688
+ the axis holds. What is picked here is the outline of one mark and nothing
14689
+ else, which is a shape and not a component-specific choice.
14690
+
14691
+ `dots` drops the glyph for a plain circle, which says how much rather than
14692
+ how good: a star carries a judgment that a level of spice, a difficulty or
14693
+ a confidence has not earned. Either way it is one shape repeated and
14694
+ clipped to the score, so halves work in both. A scale whose marks are
14355
14695
  *different* drawings is a set of choices rather than a quantity: that is
14356
14696
  `Radio.Group`, whose options already carry a value and a name each.
14357
14697
 
14358
- **Undefaulted, because it reflects.** A default of `marks` writes
14359
- `variant="marks"` onto every server-rendered rating, which React holds no
14360
- prop for and reports as a hydration mismatch. The stylesheet names only
14361
- `dots`, so an unset one draws marks anyway. */
14362
- "prop:variant"?: (HelixRating["variant"]) | undefined;
14698
+ **The star is the resting one and has no word**, which is the rule every
14699
+ axis follows and is also what this family needed anyway: it reflects, so a
14700
+ default would write the resting value onto every server-rendered rating,
14701
+ an attribute React holds no prop for and so a hydration mismatch for each
14702
+ one. The stylesheet names only `dots`, so an unset one draws the star by
14703
+ landing on the base rule. */
14704
+ "prop:shape"?: (HelixRating["shape"]) | undefined;
14363
14705
  /** The value the markup declared, which is where a reset returns to. */
14364
14706
  "attr:default-value"?: (HelixRating["defaultValue"]) | undefined;
14365
14707
  /** The value the markup declared, which is where a reset returns to. */
@@ -15185,11 +15527,11 @@ takes, where a trigger's loudness is its frame rather than its ink.
15185
15527
  `outlined` is what the unset frame already draws, so writing it would be
15186
15528
  writing the resting state out.
15187
15529
 
15188
- **The other three fields want this too and do not have it yet.** `Input`,
15189
- `Textarea` and `Combobox` wear the same frame from the same shared
15190
- stylesheet, and an inline one of each is as reasonable as an inline select.
15191
- They are left alone rather than swept, because each has a different thing
15192
- inside the frame and guessing at three is how an axis ends up meaning four
15530
+ **Every field wearing `field-frame.css` wants this too and does not have it
15531
+ yet**, which this trigger is not one of: it draws its own frame below. An
15532
+ inline number input in a toolbar is as reasonable as an inline select. They
15533
+ are left alone rather than swept, because each has a different thing inside
15534
+ the frame and guessing at a set of them is how an axis ends up meaning four
15193
15535
  things, which is the fault `appearance` was retired for. */
15194
15536
  emphasis?: (HelixSelect["emphasis"]) | undefined;
15195
15537
  /** Whether the element is open.
@@ -15328,11 +15670,11 @@ takes, where a trigger's loudness is its frame rather than its ink.
15328
15670
  `outlined` is what the unset frame already draws, so writing it would be
15329
15671
  writing the resting state out.
15330
15672
 
15331
- **The other three fields want this too and do not have it yet.** `Input`,
15332
- `Textarea` and `Combobox` wear the same frame from the same shared
15333
- stylesheet, and an inline one of each is as reasonable as an inline select.
15334
- They are left alone rather than swept, because each has a different thing
15335
- inside the frame and guessing at three is how an axis ends up meaning four
15673
+ **Every field wearing `field-frame.css` wants this too and does not have it
15674
+ yet**, which this trigger is not one of: it draws its own frame below. An
15675
+ inline number input in a toolbar is as reasonable as an inline select. They
15676
+ are left alone rather than swept, because each has a different thing inside
15677
+ the frame and guessing at a set of them is how an axis ends up meaning four
15336
15678
  things, which is the fault `appearance` was retired for. */
15337
15679
  "prop:emphasis"?: (HelixSelect["emphasis"]) | undefined;
15338
15680
  /** Whether the element is open.
@@ -16791,26 +17133,6 @@ export type HelixTableColumnHelixBeforeResizeElementEvent =
16791
17133
  HelixTableColumnElementEvent<HelixBeforeResizeEvent>;
16792
17134
 
16793
17135
  export type HelixTableColumnProps = {
16794
- /** Which edge the values line up against.
16795
-
16796
- `end` is what a column of numbers wants, so digits of the same magnitude
16797
- sit above each other. Left unset the cell inherits the table's own
16798
- alignment, which is `start` for text in either writing direction.
16799
- `DataTable` aligns the cells it draws. A `Table`'s cells are markup the
16800
- consumer wrote, so the table writes nothing onto them: it publishes the
16801
- edge to each cell under this column as `--table-cell-align`, which
16802
- `@fusion.dev/helix` reads. The heading is this element's own, and
16803
- `@fusion.dev/helix` sets it to the same edge in either table. `end` is the
16804
- inline end, so in a right-to-left table it is the left.
16805
-
16806
- **Reflected, because the heading is drawn by a stylesheet and has no other
16807
- way to learn it.** Set as a property, which is how React sets it, an
16808
- unreflected `align` left no attribute to select on, so the heading stayed at
16809
- the start over a column of digits set to the end. It is the author's
16810
- declaration and nothing moves it afterwards, so an attribute cannot come to
16811
- disagree with the element, which is the reason `open` records a custom
16812
- state instead. No default, so an unset column writes nothing onto its host. */
16813
- align?: (HelixTableColumn["align"]) | undefined;
16814
17136
  /** The key this column reads out of a row.
16815
17137
 
16816
17138
  Dot paths resolve, so `field="owner.name"` reads a nested value: a result
@@ -16845,6 +17167,62 @@ how React sets it, an unreflected `sortable` left no attribute to match.
16845
17167
  `false` reflects as no attribute at all, so an unset column writes nothing
16846
17168
  onto its host. */
16847
17169
  sortable?: (HelixTableColumn["sortable"]) | undefined;
17170
+ /** Which edge the values line up against.
17171
+
17172
+ **Text alignment, and the name says so.** `Flex` and `Grid` ask the CSS
17173
+ box-alignment question, where a thing sits in a container, and they are
17174
+ named for the properties they mirror; this is `text-align` down a column of
17175
+ values, and `Dialog` answers the same question under the same name. One
17176
+ word for both questions is how a consumer who learned it on a layout writes
17177
+ it here and gets no error, a value a component does not have leaving the
17178
+ default in place and looking deliberate.
17179
+
17180
+ `end` is what a column of numbers wants, so digits of the same magnitude
17181
+ sit above each other. Left unset the cell inherits the table's own
17182
+ alignment, which is `start` for text in either writing direction.
17183
+ `DataTable` aligns the cells it draws. A `Table`'s cells are markup the
17184
+ consumer wrote, so the table writes nothing onto them: it publishes the
17185
+ edge to each cell under this column as `--table-cell-align`, which
17186
+ `@fusion.dev/helix` reads. The heading is this element's own, and
17187
+ `@fusion.dev/helix` sets it to the same edge in either table. `end` is the
17188
+ inline end, so in a right-to-left table it is the left.
17189
+
17190
+ **Reflected, because the heading is drawn by a stylesheet and has no other
17191
+ way to learn it.** Set as a property, which is how React sets it, an
17192
+ unreflected edge left no attribute to select on, so the heading stayed at
17193
+ the start over a column of digits set to the end. It is the author's
17194
+ declaration and nothing moves it afterwards, so an attribute cannot come to
17195
+ disagree with the element, which is the reason `open` records a custom
17196
+ state instead. No default, so an unset column writes nothing onto its host. */
17197
+ "text-align"?: (HelixTableColumn["textAlign"]) | undefined;
17198
+ /** Which edge the values line up against.
17199
+
17200
+ **Text alignment, and the name says so.** `Flex` and `Grid` ask the CSS
17201
+ box-alignment question, where a thing sits in a container, and they are
17202
+ named for the properties they mirror; this is `text-align` down a column of
17203
+ values, and `Dialog` answers the same question under the same name. One
17204
+ word for both questions is how a consumer who learned it on a layout writes
17205
+ it here and gets no error, a value a component does not have leaving the
17206
+ default in place and looking deliberate.
17207
+
17208
+ `end` is what a column of numbers wants, so digits of the same magnitude
17209
+ sit above each other. Left unset the cell inherits the table's own
17210
+ alignment, which is `start` for text in either writing direction.
17211
+ `DataTable` aligns the cells it draws. A `Table`'s cells are markup the
17212
+ consumer wrote, so the table writes nothing onto them: it publishes the
17213
+ edge to each cell under this column as `--table-cell-align`, which
17214
+ `@fusion.dev/helix` reads. The heading is this element's own, and
17215
+ `@fusion.dev/helix` sets it to the same edge in either table. `end` is the
17216
+ inline end, so in a right-to-left table it is the left.
17217
+
17218
+ **Reflected, because the heading is drawn by a stylesheet and has no other
17219
+ way to learn it.** Set as a property, which is how React sets it, an
17220
+ unreflected edge left no attribute to select on, so the heading stayed at
17221
+ the start over a column of digits set to the end. It is the author's
17222
+ declaration and nothing moves it afterwards, so an attribute cannot come to
17223
+ disagree with the element, which is the reason `open` records a custom
17224
+ state instead. No default, so an unset column writes nothing onto its host. */
17225
+ textAlign?: (HelixTableColumn["textAlign"]) | undefined;
16848
17226
  /** The track this column takes, as CSS.
16849
17227
 
16850
17228
  A single track value, so anything valid in `grid-template-columns` works:
@@ -16893,26 +17271,6 @@ correct default: the raw value is what an API sorted by. */
16893
17271
  };
16894
17272
 
16895
17273
  export type HelixTableColumnSolidJsProps = {
16896
- /** Which edge the values line up against.
16897
-
16898
- `end` is what a column of numbers wants, so digits of the same magnitude
16899
- sit above each other. Left unset the cell inherits the table's own
16900
- alignment, which is `start` for text in either writing direction.
16901
- `DataTable` aligns the cells it draws. A `Table`'s cells are markup the
16902
- consumer wrote, so the table writes nothing onto them: it publishes the
16903
- edge to each cell under this column as `--table-cell-align`, which
16904
- `@fusion.dev/helix` reads. The heading is this element's own, and
16905
- `@fusion.dev/helix` sets it to the same edge in either table. `end` is the
16906
- inline end, so in a right-to-left table it is the left.
16907
-
16908
- **Reflected, because the heading is drawn by a stylesheet and has no other
16909
- way to learn it.** Set as a property, which is how React sets it, an
16910
- unreflected `align` left no attribute to select on, so the heading stayed at
16911
- the start over a column of digits set to the end. It is the author's
16912
- declaration and nothing moves it afterwards, so an attribute cannot come to
16913
- disagree with the element, which is the reason `open` records a custom
16914
- state instead. No default, so an unset column writes nothing onto its host. */
16915
- "prop:align"?: (HelixTableColumn["align"]) | undefined;
16916
17274
  /** The key this column reads out of a row.
16917
17275
 
16918
17276
  Dot paths resolve, so `field="owner.name"` reads a nested value: a result
@@ -16947,6 +17305,62 @@ how React sets it, an unreflected `sortable` left no attribute to match.
16947
17305
  `false` reflects as no attribute at all, so an unset column writes nothing
16948
17306
  onto its host. */
16949
17307
  "prop:sortable"?: (HelixTableColumn["sortable"]) | undefined;
17308
+ /** Which edge the values line up against.
17309
+
17310
+ **Text alignment, and the name says so.** `Flex` and `Grid` ask the CSS
17311
+ box-alignment question, where a thing sits in a container, and they are
17312
+ named for the properties they mirror; this is `text-align` down a column of
17313
+ values, and `Dialog` answers the same question under the same name. One
17314
+ word for both questions is how a consumer who learned it on a layout writes
17315
+ it here and gets no error, a value a component does not have leaving the
17316
+ default in place and looking deliberate.
17317
+
17318
+ `end` is what a column of numbers wants, so digits of the same magnitude
17319
+ sit above each other. Left unset the cell inherits the table's own
17320
+ alignment, which is `start` for text in either writing direction.
17321
+ `DataTable` aligns the cells it draws. A `Table`'s cells are markup the
17322
+ consumer wrote, so the table writes nothing onto them: it publishes the
17323
+ edge to each cell under this column as `--table-cell-align`, which
17324
+ `@fusion.dev/helix` reads. The heading is this element's own, and
17325
+ `@fusion.dev/helix` sets it to the same edge in either table. `end` is the
17326
+ inline end, so in a right-to-left table it is the left.
17327
+
17328
+ **Reflected, because the heading is drawn by a stylesheet and has no other
17329
+ way to learn it.** Set as a property, which is how React sets it, an
17330
+ unreflected edge left no attribute to select on, so the heading stayed at
17331
+ the start over a column of digits set to the end. It is the author's
17332
+ declaration and nothing moves it afterwards, so an attribute cannot come to
17333
+ disagree with the element, which is the reason `open` records a custom
17334
+ state instead. No default, so an unset column writes nothing onto its host. */
17335
+ "attr:text-align"?: (HelixTableColumn["textAlign"]) | undefined;
17336
+ /** Which edge the values line up against.
17337
+
17338
+ **Text alignment, and the name says so.** `Flex` and `Grid` ask the CSS
17339
+ box-alignment question, where a thing sits in a container, and they are
17340
+ named for the properties they mirror; this is `text-align` down a column of
17341
+ values, and `Dialog` answers the same question under the same name. One
17342
+ word for both questions is how a consumer who learned it on a layout writes
17343
+ it here and gets no error, a value a component does not have leaving the
17344
+ default in place and looking deliberate.
17345
+
17346
+ `end` is what a column of numbers wants, so digits of the same magnitude
17347
+ sit above each other. Left unset the cell inherits the table's own
17348
+ alignment, which is `start` for text in either writing direction.
17349
+ `DataTable` aligns the cells it draws. A `Table`'s cells are markup the
17350
+ consumer wrote, so the table writes nothing onto them: it publishes the
17351
+ edge to each cell under this column as `--table-cell-align`, which
17352
+ `@fusion.dev/helix` reads. The heading is this element's own, and
17353
+ `@fusion.dev/helix` sets it to the same edge in either table. `end` is the
17354
+ inline end, so in a right-to-left table it is the left.
17355
+
17356
+ **Reflected, because the heading is drawn by a stylesheet and has no other
17357
+ way to learn it.** Set as a property, which is how React sets it, an
17358
+ unreflected edge left no attribute to select on, so the heading stayed at
17359
+ the start over a column of digits set to the end. It is the author's
17360
+ declaration and nothing moves it afterwards, so an attribute cannot come to
17361
+ disagree with the element, which is the reason `open` records a custom
17362
+ state instead. No default, so an unset column writes nothing onto its host. */
17363
+ "prop:textAlign"?: (HelixTableColumn["textAlign"]) | undefined;
16950
17364
  /** The track this column takes, as CSS.
16951
17365
 
16952
17366
  A single track value, so anything valid in `grid-template-columns` works:
@@ -21795,6 +22209,10 @@ export type CustomElements = {
21795
22209
  * Component attributes and properties that can be applied to the element or by using JavaScript.
21796
22210
  *
21797
22211
  * - `shape`: Whether the avatar is a circle or a rounded square.
22212
+ *
22213
+ * `rounded` and not `square`, which is the sharp-cornered pole of the same
22214
+ * axis and what `QrCode` draws with it. This corner is `radii-md`, so the word
22215
+ * for it is the one the registry already has.
21798
22216
  * - `size`: Edge length of the avatar.
21799
22217
  * - `name`: Name of the person or entity.
21800
22218
  *
@@ -22079,18 +22497,12 @@ export type CustomElements = {
22079
22497
  *
22080
22498
  * Absent falls back to the table's own caption, which is usually the right
22081
22499
  * words and is already written.
22082
- * - `direction`: Whether the categories run down the side rather than along the bottom.
22083
- *
22084
- * Absent is columns. `horizontal` is the one to reach for when the category
22085
- * names are words rather than dates: a row of long names either overlaps or
22086
- * turns on its side, and neither is as readable as putting them down the left
22087
- * where they read normally.
22088
22500
  * - `gridlines`: Which rules are drawn across the plot, if any.
22089
22501
  *
22090
22502
  * Absent draws none. `value` rules the axis the columns are *measured* on,
22091
22503
  * `category` rules the axis they are *arranged* on with one through each
22092
22504
  * group, and `both` draws both. Which of those is horizontal turns with
22093
- * `direction`, because a rule belongs to an axis and not to a screen edge.
22505
+ * `orientation`, because a rule belongs to an axis and not to a screen edge.
22094
22506
  *
22095
22507
  * **A bare `gridlines` means `value`**, and so does anything unrecognized: an
22096
22508
  * unrecognized value that draws nothing is indistinguishable from the
@@ -22124,6 +22536,15 @@ export type CustomElements = {
22124
22536
  * A line among columns measures from zero, because the columns do and they
22125
22537
  * share the axis. So does a line on the second scale, which is that scale's
22126
22538
  * own rule rather than this one's.
22539
+ * - `orientation`: Whether the categories run down the side rather than along the bottom.
22540
+ *
22541
+ * Absent is columns. `horizontal` is the one to reach for when the category
22542
+ * names are words rather than dates: a row of long names either overlaps or
22543
+ * turns on its side, and neither is as readable as putting them down the left
22544
+ * where they read normally.
22545
+ *
22546
+ * `orientation` and not `orientation`, which `Trend` uses in the same group for
22547
+ * which way a number moved.
22127
22548
  * - `secondary`: Which series are measured against a scale of their own, by name.
22128
22549
  *
22129
22550
  * Separated and matched the way `lines` is, against the column headings the
@@ -23092,9 +23513,9 @@ export type CustomElements = {
23092
23513
  * - `controls-placement`/`controlsPlacement`: Which side of the slides the arrows sit on.
23093
23514
  *
23094
23515
  * The same four sides as `indicatorPlacement` and the same default, so a
23095
- * carousel that moves only one of them keeps the other where it was.
23096
- * `inline-start` or `inline-end` stacks the arrows into a column, which is
23097
- * what a vertical track usually wants.
23516
+ * carousel that moves only one of them keeps the other where it was. `start`
23517
+ * or `end` stacks the arrows into a column, which is what a vertical track
23518
+ * usually wants.
23098
23519
  *
23099
23520
  * `overlay` puts them on the slides, at the track's own edges, which is what a
23100
23521
  * full-bleed carousel wants: the slide is the page and the controls are on it
@@ -23121,8 +23542,9 @@ export type CustomElements = {
23121
23542
  * is a column and the same question is `align-self`. A consumer should not
23122
23543
  * have to know which of those two words their edge wanted.
23123
23544
  *
23124
- * Logical, like the placement: `start` is the left in English and the right in
23125
- * Arabic on a horizontal run, and the top on a vertical one.
23545
+ * Logical, like the placement's own `start` and `end`: `start` is the left in
23546
+ * English and the right in Arabic on a horizontal run, and the top on a
23547
+ * vertical one.
23126
23548
  *
23127
23549
  * Unset splits the row, dots to the start and arrows to the end, which is
23128
23550
  * what keeps two items in one grid cell from landing on each other. Beside the
@@ -23132,16 +23554,22 @@ export type CustomElements = {
23132
23554
  * exist to avoid.
23133
23555
  * - `indicator-placement`/`indicatorPlacement`: Which side of the slides the dots sit on.
23134
23556
  *
23135
- * Unset is `block-end`, under them. `block-start` puts them above,
23136
- * `inline-start` and `inline-end` beside, where a run of dots becomes a
23137
- * column.
23557
+ * Unset is `bottom`, under them. `top` puts them above, `start` and `end`
23558
+ * beside, where a run of dots becomes a column.
23559
+ *
23560
+ * **The sides of the content, not positions along a bar.** `start` and `end`
23561
+ * are the logical ones and they are logical because that axis flips: a
23562
+ * carousel with its dots at the start should put them on the right in Arabic
23563
+ * without being told. `top` and `bottom` are the block edges, which flip in
23564
+ * no writing mode this library draws for, so the plain word is the honest one
23565
+ * and `block-start` would be jargon standing in for it.
23138
23566
  *
23139
- * **The sides of the content, not positions along a bar**, and logical names
23140
- * rather than `top`/`left`: an `inline-start` carousel should put its dots on
23141
- * the right in Arabic without being told.
23567
+ * **`Drawer` and `Toast` say it in exactly these four words**, and one
23568
+ * vocabulary across the three is worth more than each family's own: a
23569
+ * consumer who has placed a drawer knows where a carousel's dots go.
23142
23570
  *
23143
- * Independent of `controlsPlacement`. Both default to the block end, where
23144
- * they share the row and split it, dots to the start and arrows to the end,
23571
+ * Independent of `controlsPlacement`. Both default to the bottom, where they
23572
+ * share the row and split it, dots to the start and arrows to the end,
23145
23573
  * arrived at by two defaults rather than by a rule about the pair, so moving
23146
23574
  * one leaves the other alone.
23147
23575
  * - `autoplay`: Whether the carousel advances on its own.
@@ -23901,18 +24329,30 @@ export type CustomElements = {
23901
24329
  *
23902
24330
  * Component attributes and properties that can be applied to the element or by using JavaScript.
23903
24331
  *
23904
- * - `variant`: How the choice presents itself.
24332
+ * - `separation`: Where the choice's own surface ends.
23905
24333
  *
23906
- * - `plain` is the default and is never written: a box beside its words,
24334
+ * The question `separation` asks everywhere else, asked of one option, so it
24335
+ * is that word: what these values pick is a surface, and `plain` is already
24336
+ * the registry's own word for the answer this family used it for. `Radio`
24337
+ * takes the same three for the same reason.
24338
+ *
24339
+ * - `plain` is the resting one and is never written: a box beside its words,
23907
24340
  * which is what a list of choices should be almost always.
23908
- * - `card` puts it in a bounded surface, for options that need room to
24341
+ * - `outlined` puts it in a bounded surface, for options that need room to
23909
24342
  * explain themselves: a description, an icon, a price. It is the half a
23910
24343
  * `data-card` link cannot do, because a link reports no value and belongs
23911
24344
  * to no group, so a card that is genuinely an answer has to be this.
24345
+ * - `filled` is that same card on a ground of its own with no edge, which is
24346
+ * what a column of options wants where a hairline around every one of them
24347
+ * is a grid of lines rather than a set of answers.
24348
+ *
24349
+ * **`elevated` is the one value of the axis this family does not take.** A
24350
+ * raised choice competes with a dialog: the top layer is where a thing that
24351
+ * interrupts you lives, and an option in a form is not one of those.
23912
24352
  *
23913
- * The box stays in both. A card whose only marker was its own border would
23914
- * ask a reader to compare surfaces across a row to find the answer, and would
23915
- * leave nothing for a high-contrast display.
24353
+ * The box stays in all of them. A card whose only marker was its own border
24354
+ * would ask a reader to compare surfaces across a row to find the answer, and
24355
+ * would leave nothing for a high-contrast display.
23916
24356
  * - `checked`: Whether the control is checked.
23917
24357
  *
23918
24358
  * One property rather than two. Writing always applies;
@@ -24832,9 +25272,8 @@ export type CustomElements = {
24832
25272
  * - `footer`: The row holding the value and the tools.
24833
25273
  * - `format`: The control that changes the syntax the value is written in.
24834
25274
  * - `format-button`: The inner control.
24835
- * - `grid`: The saturation and brightness square.
25275
+ * - `grid`: The saturation and brightness square. The mark showing where in the square the color sits is drawn on the square itself, which is `::part(grid)::after` from a consumer's sheet: the two channels are already on the square as `--color-picker-saturation` and `--color-picker-brightness`, so a box would have carried nothing, and this tier ships no CSS.
24836
25276
  * - `grid-brightness`: The range input for its vertical axis.
24837
- * - `grid-handle`: The mark showing where in the square the color sits.
24838
25277
  * - `grid-saturation`: The range input for the square's horizontal axis.
24839
25278
  * - `sample`: The chip of the current color, which copies it when pressed.
24840
25279
  * - `swatch`: One preset.
@@ -26431,9 +26870,12 @@ export type CustomElements = {
26431
26870
  * width so a column of numbers lines up by its digits. Only with
26432
26871
  * `direction="row"`: stacked, a label and its value share one edge already.
26433
26872
  *
26434
- * Flex's word for the same thing, and a grid rather than a flex row
26435
- * underneath, so the labels still share one column while the values share an
26436
- * end.
26873
+ * Flex's value for the same idea, under a shorter name than Flex's own:
26874
+ * there it is `justify-content`, the CSS property it sets, and here the
26875
+ * underlying layout is a grid handing an edge down to each item as a custom
26876
+ * property, so the labels still share one column while the values share an
26877
+ * end. Naming a property this does not set after it would be the wrong kind
26878
+ * of precision.
26437
26879
  * - `width`: How wide the list is.
26438
26880
  *
26439
26881
  * Absent, it fills the row it is in. `auto` is as wide as its widest pair,
@@ -26515,16 +26957,6 @@ export type CustomElements = {
26515
26957
  *
26516
26958
  * Component attributes and properties that can be applied to the element or by using JavaScript.
26517
26959
  *
26518
- * - `align`: Which way the panel's contents read.
26519
- *
26520
- * One property for the whole panel rather than one per region. The regions are
26521
- * never mixed in practice: a dialog that asks a short question centers its
26522
- * mark, its title, its sentence and its buttons together, and a dialog holding
26523
- * a form runs all four from the start. Three properties would be three ways to
26524
- * write the same two arrangements, and a fourth way to get one of them wrong.
26525
- *
26526
- * Unset is `start` and stays unset, so a reflected default cannot appear on a
26527
- * host whose server output never had it.
26528
26960
  * - `size`: How wide the panel is allowed to be.
26529
26961
  *
26530
26962
  * Steps rather than a number, because a dialog's width is a fact about what is
@@ -26541,9 +26973,27 @@ export type CustomElements = {
26541
26973
  * rule's own test is whether two of them sitting together could legitimately
26542
26974
  * differ, and it is answering "a ragged row is unwritable". Two dialogs never
26543
26975
  * sit together. One is on screen at a time, in the top layer, and it is the
26544
- * region rather than a control in one, which is the same reason `Avatar` and
26545
- * `Spinner` keep theirs. Not `appearance`, which says how a thing reads
26546
- * rather than how wide it is.
26976
+ * region rather than a control in one, which is the other half of the axis's
26977
+ * domain: the rest of it is pictures, which are not controls either. Not
26978
+ * `appearance`, which says how a thing reads rather than how wide it is.
26979
+ * - `text-align`/`textAlign`: Which way the panel's contents read.
26980
+ *
26981
+ * **Text alignment, and the name says so.** `Flex` and `Grid` ask the CSS
26982
+ * box-alignment question, where things sit in a container, and they are named
26983
+ * for the properties they mirror; this one is `text-align` on a panel of
26984
+ * prose, and `Table.Column` answers the same question under the same name.
26985
+ * One word for both questions is how a consumer who learned it on a layout
26986
+ * writes it here and gets no error, a value a component does not have leaving
26987
+ * the default in place and looking deliberate.
26988
+ *
26989
+ * One property for the whole panel rather than one per region. The regions are
26990
+ * never mixed in practice: a dialog that asks a short question centers its
26991
+ * mark, its title, its sentence and its buttons together, and a dialog holding
26992
+ * a form runs all four from the start. Three properties would be three ways to
26993
+ * write the same two arrangements, and a fourth way to get one of them wrong.
26994
+ *
26995
+ * Unset is `start` and stays unset, so a reflected default cannot appear on a
26996
+ * host whose server output never had it.
26547
26997
  * - `open`: Whether the element is open.
26548
26998
  *
26549
26999
  * One property, not two, so `dialog.open` answers the question anyone
@@ -28329,11 +28779,30 @@ export type CustomElements = {
28329
28779
  *
28330
28780
  * Component attributes and properties that can be applied to the element or by using JavaScript.
28331
28781
  *
28332
- * - `align`: Alignment across the direction.
28782
+ * - `align-items`/`alignItems`: Alignment across the direction, which is `align-items`.
28783
+ *
28784
+ * **Named for the CSS property it sets, because it is that property.** A flex
28785
+ * container is the one place where the box-alignment words are already the
28786
+ * reader's, so a shorter name would be a second vocabulary for something they
28787
+ * can already say, and `align` alone is the word four other families use for
28788
+ * four other questions: `Dialog` and `Table.Column` mean `text-align` by it.
28789
+ *
28790
+ * **It also keeps the name out of the browser's way.** `align` is a legacy
28791
+ * HTML presentational attribute mapped to `text-align` on any element that
28792
+ * carries one, this one included: measured, an invented tag with
28793
+ * `align="center"` computes centered text too, so it is nothing to do with
28794
+ * being a known element. A row that carried it therefore centered the text
28795
+ * inside every field in it, through a hint no rule here declares and none can
28796
+ * see, and the fix is a name the platform has no opinion about rather than a
28797
+ * guard against the hint.
28333
28798
  * - `direction`: Whether items run across or down.
28334
28799
  * - `gap`: Space between items, named on the space scale.
28335
28800
  * - `inline`: Flows with surrounding text instead of taking the full width.
28336
- * - `justify`: Distribution along the direction.
28801
+ * - `justify-content`/`justifyContent`: Distribution along the direction, which is `justify-content`.
28802
+ *
28803
+ * Named for the property it sets, the way `alignItems` is. `between` and
28804
+ * `around` drop the `space-` prefix and nothing else does, because those two
28805
+ * are the only values whose CSS spelling is two words.
28337
28806
  * - `wrap`: Whether items wrap onto more lines.
28338
28807
  * - `whenSettled`: Resolves a frame after the first update, when transitions are switched on.
28339
28808
  *
@@ -28466,7 +28935,19 @@ export type CustomElements = {
28466
28935
  *
28467
28936
  * Component attributes and properties that can be applied to the element or by using JavaScript.
28468
28937
  *
28469
- * - `align`: Alignment of each cell within its row.
28938
+ * - `align-items`/`alignItems`: Alignment of each cell within its row, which is `align-items`.
28939
+ *
28940
+ * **Named for the CSS property it sets**, the way `Flex` is, and the same
28941
+ * property on a grid: it places every cell in its row's track rather than
28942
+ * placing the tracks. No `baseline`, which `Flex` offers, because cells in a
28943
+ * row of a grid are boxes of unrelated content and lining their first lines
28944
+ * up is a thing a reader asks for between siblings in a row, not between
28945
+ * cells in a table of them.
28946
+ *
28947
+ * There is no `justifyContent` here for the same reason: the tracks are
28948
+ * `1fr`, so they already fill the row and there is nothing left over to
28949
+ * distribute. `columns`, `min` and `--grid-columns` are how a grid says how
28950
+ * wide its tracks are.
28470
28951
  * - `columns`: Fixed number of equal columns.
28471
28952
  * - `gap`: Space between cells, named on the space scale.
28472
28953
  * - `min`: Minimum column width, filling as many as fit.
@@ -29085,12 +29566,13 @@ export type CustomElements = {
29085
29566
  *
29086
29567
  * Component attributes and properties that can be applied to the element or by using JavaScript.
29087
29568
  *
29088
- * - `rounded`: Whether the corners are cut.
29569
+ * - `shape`: Whether the corners are cut.
29089
29570
  *
29090
- * A boolean rather than a radius, because the radius is a token and the
29091
- * question a consumer is answering is whether this picture is a card's
29092
- * surface or a page's. `--image-radius` moves it for the case that is
29093
- * neither.
29571
+ * The axis and not a boolean, because `rounded` is a registered word and a
29572
+ * private spelling of a registry question is what `appearance` was retired
29573
+ * for. Not a radius either: the radius is a token and the question a consumer
29574
+ * is answering is whether this picture is a card's surface or a page's.
29575
+ * `--image-radius` moves it for the case that is neither.
29094
29576
  * - `alt`: What it shows, for a reader who cannot see it.
29095
29577
  *
29096
29578
  * Empty is a real answer and means decoration. Omitting the attribute is not
@@ -29183,7 +29665,7 @@ export type CustomElements = {
29183
29665
  * - `--image-fit`: How the picture fills it. (default: `undefined`)
29184
29666
  * - `--image-placeholder-color`: The resting surface behind both stand-ins. (default: `undefined`)
29185
29667
  * - `--image-position`: Which part survives a crop. (default: `undefined`)
29186
- * - `--image-radius`: Corner radius, under `rounded`. (default: `undefined`)
29668
+ * - `--image-radius`: Corner radius, under `shape="rounded"`. (default: `undefined`)
29187
29669
  *
29188
29670
  * ## CSS Parts
29189
29671
  *
@@ -29664,10 +30146,9 @@ export type CustomElements = {
29664
30146
  *
29665
30147
  * Custom selectors for styling elements within the component.
29666
30148
  *
29667
- * - `entry`: One name and its swatch.
30149
+ * - `entry`: One name and its swatch. The swatch is drawn on the entry, which is `::part(entry)::before` from a consumer's sheet: the series is already on the entry as `--chart-series`, so a box would have carried nothing, and this tier ships no CSS.
29668
30150
  * - `list`: The list itself.
29669
30151
  * - `name`: One series name.
29670
- * - `swatch`: The color a series is drawn in.
29671
30152
  *
29672
30153
  * ## CSS States
29673
30154
  *
@@ -30502,7 +30983,7 @@ export type CustomElements = {
30502
30983
  * last reader did rather than what the author wrote. `:state(open)` carries
30503
30984
  * the resolved state for stylesheets, which is what the mirror is for.
30504
30985
  * - `default-open`/`defaultOpen`: Whether the markup declared it open. Ignored once `open` is written.
30505
- * - `full-below`/`fullBelow`: The width, in pixels, under which a card becomes a band. Zero never does.
30986
+ * - `band-below`/`bandBelow`: The width, in pixels, under which a card becomes a band. Zero never does.
30506
30987
  *
30507
30988
  * A card is a panel hung off one word, and there is no room to hang anything
30508
30989
  * off a word on a phone: the columns do not shrink past
@@ -30535,16 +31016,23 @@ export type CustomElements = {
30535
31016
  * - `variant`: Whether the panel is a card under the trigger or a band across the page.
30536
31017
  *
30537
31018
  * The resting one is the card, hanging off the trigger and as wide as it
30538
- * needs to be. `full` is the other shape navigations use: a band from edge to
31019
+ * needs to be. `band` is the other shape navigations use: a run from edge to
30539
31020
  * edge under the header, with its contents held to the page's own measure, so
30540
31021
  * a set of destinations too wide to sit under one word gets the whole width
30541
31022
  * to lay out in.
30542
31023
  *
30543
- * It changes where the panel goes as well as how it looks, which is why this
30544
- * tier knows about it at all: a band spans the viewport, so there is nothing
30545
- * to measure it against and nothing to flip or shift to, and the placing pass
30546
- * is told not to run. Everything else the popover gives, the top layer and
30547
- * the dismissal, is exactly what such a band needs.
31024
+ * **A band and not a width, which is why the word is not `full`.** It changes
31025
+ * where the panel goes as well as how wide it is, which is why this tier
31026
+ * knows about it at all: a band spans the viewport, so there is nothing to
31027
+ * measure it against and nothing to flip or shift to, and the placing pass is
31028
+ * told not to run. Everything else the popover gives, the top layer and the
31029
+ * dismissal, is exactly what such a band needs. `full` is the registry's word
31030
+ * for a width, and `Button` and `Dialog` are the two families answering that
31031
+ * question; borrowing it here would put a third meaning on it.
31032
+ *
31033
+ * `variant` and not an axis, for the reason the registry gives: a card under
31034
+ * a word and a band under a header are two arrangements this family has, and
31035
+ * no other family is being asked the same question.
30548
31036
  * - `whenSettled`: Resolves a frame after the first update, when transitions are switched on.
30549
31037
  *
30550
31038
  * **Named `whenSettled` because `settled` is taken four times over**, by
@@ -30618,7 +31106,7 @@ export type CustomElements = {
30618
31106
  *
30619
31107
  * These can be used to apply styling when a component is in a given state.
30620
31108
  *
30621
- * - `narrow`: While the page is under `full-below`, so the panel is a band whether or not one was asked for.
31109
+ * - `narrow`: While the page is under `band-below`, so the panel is a band whether or not one was asked for.
30622
31110
  * - `open`: While the panel is open, which is when the trigger reads as current.
30623
31111
  * - `settled`: Set a frame after the first render. Transitions are held off until it is, so an element never animates its own arrival.
30624
31112
  */
@@ -32253,6 +32741,13 @@ export type CustomElements = {
32253
32741
  * the name of the tool being run, or the file being read.
32254
32742
  * - `size`: Diameter relative to the surrounding text.
32255
32743
  *
32744
+ * **`Loader`'s three steps, because the two are swapped for each other.** An
32745
+ * orb and a spinner are the same job drawn differently, a wait a reader is
32746
+ * looking at, and a product that replaces one with the other should not find
32747
+ * that a step it was writing has stopped existing. `md` is the resting one
32748
+ * and selects nothing, landing on the base rule the way a written resting
32749
+ * value does everywhere else.
32750
+ *
32256
32751
  * Reflected because the stylesheet selects on it. The mesh is chosen from the
32257
32752
  * rendered box rather than from this, so `--orb-size` and a consumer's own
32258
32753
  * `inline-size` get the same treatment as the named steps.
@@ -33196,6 +33691,8 @@ export type CustomElements = {
33196
33691
  * - `--progress-color`: Fill of the part that is done. (default: `undefined`)
33197
33692
  * - `--progress-ring-size`: Diameter of the ring appearance. (default: `undefined`)
33198
33693
  * - `--progress-ring-width`: Thickness of its stroke. (default: `undefined`)
33694
+ * - `--progress-size`: Thickness of the bar. (default: `undefined`)
33695
+ * - `--progress-track-color`: Fill of the part that is not. (default: `undefined`)
33199
33696
  * - `--progress-fraction`: The value as a fraction of the range, 0 to 1. Pinned to 1 while indeterminate. (default: `undefined`)
33200
33697
  *
33201
33698
  * ## CSS Parts
@@ -33563,9 +34060,9 @@ export type CustomElements = {
33563
34060
  * Unnecessary under `chip`, which has no room for a circle beside its mark
33564
34061
  * and hides it already.
33565
34062
  *
33566
- * `card` only, and it is a graphic that goes rather than a radio: the control
33567
- * in the shadow root is untouched, so the row is still focusable, still
33568
- * reported to a screen reader, and still the thing a form submits.
34063
+ * A separated choice only, and it is a graphic that goes rather than a radio:
34064
+ * the control in the shadow root is untouched, so the row is still focusable,
34065
+ * still reported to a screen reader, and still the thing a form submits.
33569
34066
  *
33570
34067
  * Safe because the card already carries the answer in its surface, a raised
33571
34068
  * fill inside a primary edge and a three-pixel ring of it. Without that ring
@@ -33574,21 +34071,40 @@ export type CustomElements = {
33574
34071
  * Not on `Checkbox`, deliberately. A radio card with no circle is still
33575
34072
  * unmistakably one-of-many because its siblings behave that way; a checkbox
33576
34073
  * card with no box loses the only thing that says you may pick several.
33577
- * - `variant`: How the choice presents itself.
34074
+ * - `separation`: Where the choice's own surface ends.
33578
34075
  *
33579
- * - `plain` is the default and is never written: a circle beside its words,
33580
- * which is what a list of choices should be almost always.
33581
- * - `card` puts it in a bounded surface, for options that need room to
34076
+ * The question `separation` asks everywhere else, asked of one option, so it
34077
+ * is that word: what these values pick is a surface, and `plain` is already
34078
+ * the registry's own word for the answer this family used it for.
34079
+ *
34080
+ * - `plain` is the resting one and is never written: a circle beside its
34081
+ * words, which is what a list of choices should be almost always.
34082
+ * - `outlined` puts it in a bounded surface, for options that need room to
33582
34083
  * explain themselves: a description, an icon, a price. It is the half a
33583
34084
  * `data-card` link cannot do, because a link reports no value and belongs
33584
34085
  * to no group, so a card that is genuinely an answer has to be this.
33585
- * - `chip` is the answer as its own small surface, for a row of short
33586
- * choices read at a glance. It hides the circle, the surface being the
33587
- * whole mark, which is why `hide-control` says it is unnecessary here.
33588
- *
33589
- * The circle stays in both. A card whose only marker was its own border would
33590
- * ask a reader to compare surfaces across a row to find the answer, and would
33591
- * leave nothing for a high-contrast display.
34086
+ * - `filled` is that same card on a ground of its own with no edge, which is
34087
+ * what a column of choices wants where a hairline around every one of them
34088
+ * is a grid of lines rather than a set of answers.
34089
+ *
34090
+ * **`elevated` is the one value of the axis this family does not take.** A
34091
+ * raised choice competes with a dialog: the top layer is where a thing that
34092
+ * interrupts you lives, and an option in a form is not one of those, so a
34093
+ * column of lifted cards reads as a stack of floating things none of which is
34094
+ * settled.
34095
+ *
34096
+ * The circle stays in all of them. A card whose only marker was its own
34097
+ * border would ask a reader to compare surfaces across a row to find the
34098
+ * answer, and would leave nothing for a high-contrast display.
34099
+ * - `variant`: The answer as its own small surface, for a row of short choices read at a
34100
+ * glance.
34101
+ *
34102
+ * **Not a separation, which is why it is still `variant`.** The other values
34103
+ * pick where a surface ends around a row that keeps its circle and its words;
34104
+ * a chip has neither. It hides the circle, the surface being the whole mark,
34105
+ * which is why `hide-control` says it is unnecessary here, and it takes the
34106
+ * words out of the flow to be the accessible name. That removes the
34107
+ * distinction `separation` exists to make rather than answering it.
33592
34108
  * - `disabled`: Whether this one can be chosen.
33593
34109
  * - `selected`: Whether this is the current one.
33594
34110
  *
@@ -33697,10 +34213,9 @@ export type CustomElements = {
33697
34213
  *
33698
34214
  * Custom selectors for styling elements within the component.
33699
34215
  *
33700
- * - `box`: The circle.
34216
+ * - `box`: The circle. The dot inside it is drawn on the box itself, which is `::part(box)::after` from a consumer's sheet: this tier ships no CSS, so a box it renders for one to paint is an empty child costing whatever the consumer's own layout charges for a child. `ListItem` measured that.
33701
34217
  * - `item`: The button, which is the whole row.
33702
34218
  * - `label`: The words beside it.
33703
- * - `mark`: The dot inside it.
33704
34219
  *
33705
34220
  * ## CSS States
33706
34221
  *
@@ -33719,22 +34234,27 @@ export type CustomElements = {
33719
34234
  *
33720
34235
  * Component attributes and properties that can be applied to the element or by using JavaScript.
33721
34236
  *
33722
- * - `variant`: Which mark the row is drawn with.
34237
+ * - `shape`: The geometry one mark is drawn to.
33723
34238
  *
33724
- * `marks` is the star, and is what a rating means to most readers. `dots`
33725
- * drops the glyph for a plain circle, which says how much rather than how
33726
- * good: a star carries a judgment that a level of spice, a difficulty or a
33727
- * confidence has not earned.
34239
+ * The registry's word, because the question is the registry's: `Avatar`,
34240
+ * `Skeleton`, `IconButton`, `Meter` and `Progress` each ask what geometry
34241
+ * their own thing is cut to under this name, and `dots` is already a value
34242
+ * the axis holds. What is picked here is the outline of one mark and nothing
34243
+ * else, which is a shape and not a component-specific choice.
33728
34244
  *
33729
- * Both are one shape repeated and clipped to the score, so halves work in
33730
- * either, and both are only a choice of drawing. A scale whose marks are
34245
+ * `dots` drops the glyph for a plain circle, which says how much rather than
34246
+ * how good: a star carries a judgment that a level of spice, a difficulty or
34247
+ * a confidence has not earned. Either way it is one shape repeated and
34248
+ * clipped to the score, so halves work in both. A scale whose marks are
33731
34249
  * *different* drawings is a set of choices rather than a quantity: that is
33732
34250
  * `Radio.Group`, whose options already carry a value and a name each.
33733
34251
  *
33734
- * **Undefaulted, because it reflects.** A default of `marks` writes
33735
- * `variant="marks"` onto every server-rendered rating, which React holds no
33736
- * prop for and reports as a hydration mismatch. The stylesheet names only
33737
- * `dots`, so an unset one draws marks anyway.
34252
+ * **The star is the resting one and has no word**, which is the rule every
34253
+ * axis follows and is also what this family needed anyway: it reflects, so a
34254
+ * default would write the resting value onto every server-rendered rating,
34255
+ * an attribute React holds no prop for and so a hydration mismatch for each
34256
+ * one. The stylesheet names only `dots`, so an unset one draws the star by
34257
+ * landing on the base rule.
33738
34258
  * - `default-value`/`defaultValue`: The value the markup declared, which is where a reset returns to.
33739
34259
  * - `value`: What the control holds now, and what its form submits.
33740
34260
  *
@@ -34833,11 +35353,11 @@ export type CustomElements = {
34833
35353
  * `outlined` is what the unset frame already draws, so writing it would be
34834
35354
  * writing the resting state out.
34835
35355
  *
34836
- * **The other three fields want this too and do not have it yet.** `Input`,
34837
- * `Textarea` and `Combobox` wear the same frame from the same shared
34838
- * stylesheet, and an inline one of each is as reasonable as an inline select.
34839
- * They are left alone rather than swept, because each has a different thing
34840
- * inside the frame and guessing at three is how an axis ends up meaning four
35356
+ * **Every field wearing `field-frame.css` wants this too and does not have it
35357
+ * yet**, which this trigger is not one of: it draws its own frame below. An
35358
+ * inline number input in a toolbar is as reasonable as an inline select. They
35359
+ * are left alone rather than swept, because each has a different thing inside
35360
+ * the frame and guessing at a set of them is how an axis ends up meaning four
34841
35361
  * things, which is the fault `appearance` was retired for.
34842
35362
  * - `open`: Whether the element is open.
34843
35363
  *
@@ -36321,10 +36841,8 @@ export type CustomElements = {
36321
36841
  * - `description`: The line under it.
36322
36842
  * - `label`: The step's name, which is a control.
36323
36843
  * - `label-button`: The inner control.
36324
- * - `lead`: The half line arriving from the step before.
36325
36844
  * - `mark`: The glyph inside the marker: a tick, a dot, or an empty ring.
36326
36845
  * - `marker`: The shape carrying the number or the check.
36327
- * - `trail`: The half line running on to the next.
36328
36846
  *
36329
36847
  * ## CSS States
36330
36848
  *
@@ -36510,8 +37028,7 @@ export type CustomElements = {
36510
37028
  * - `field`: The row: the track and its label.
36511
37029
  * - `hint`: Help under the control, while nothing is wrong.
36512
37030
  * - `label`: The words beside it.
36513
- * - `thumb`: The part that moves.
36514
- * - `track`: The groove the thumb travels in.
37031
+ * - `track`: The groove. The thumb that travels in it is drawn on the groove itself, which is `::part(track)::after` from a consumer's sheet: this tier ships no CSS, so a box it renders for one to paint is an empty child costing whatever the consumer's own layout charges for a child. `ListItem` measured that.
36515
37032
  *
36516
37033
  * ## CSS States
36517
37034
  *
@@ -36588,25 +37105,6 @@ export type CustomElements = {
36588
37105
  *
36589
37106
  * Component attributes and properties that can be applied to the element or by using JavaScript.
36590
37107
  *
36591
- * - `align`: Which edge the values line up against.
36592
- *
36593
- * `end` is what a column of numbers wants, so digits of the same magnitude
36594
- * sit above each other. Left unset the cell inherits the table's own
36595
- * alignment, which is `start` for text in either writing direction.
36596
- * `DataTable` aligns the cells it draws. A `Table`'s cells are markup the
36597
- * consumer wrote, so the table writes nothing onto them: it publishes the
36598
- * edge to each cell under this column as `--table-cell-align`, which
36599
- * `@fusion.dev/helix` reads. The heading is this element's own, and
36600
- * `@fusion.dev/helix` sets it to the same edge in either table. `end` is the
36601
- * inline end, so in a right-to-left table it is the left.
36602
- *
36603
- * **Reflected, because the heading is drawn by a stylesheet and has no other
36604
- * way to learn it.** Set as a property, which is how React sets it, an
36605
- * unreflected `align` left no attribute to select on, so the heading stayed at
36606
- * the start over a column of digits set to the end. It is the author's
36607
- * declaration and nothing moves it afterwards, so an attribute cannot come to
36608
- * disagree with the element, which is the reason `open` records a custom
36609
- * state instead. No default, so an unset column writes nothing onto its host.
36610
37108
  * - `field`: The key this column reads out of a row.
36611
37109
  *
36612
37110
  * Dot paths resolve, so `field="owner.name"` reads a nested value: a result
@@ -36638,6 +37136,33 @@ export type CustomElements = {
36638
37136
  * how React sets it, an unreflected `sortable` left no attribute to match.
36639
37137
  * `false` reflects as no attribute at all, so an unset column writes nothing
36640
37138
  * onto its host.
37139
+ * - `text-align`/`textAlign`: Which edge the values line up against.
37140
+ *
37141
+ * **Text alignment, and the name says so.** `Flex` and `Grid` ask the CSS
37142
+ * box-alignment question, where a thing sits in a container, and they are
37143
+ * named for the properties they mirror; this is `text-align` down a column of
37144
+ * values, and `Dialog` answers the same question under the same name. One
37145
+ * word for both questions is how a consumer who learned it on a layout writes
37146
+ * it here and gets no error, a value a component does not have leaving the
37147
+ * default in place and looking deliberate.
37148
+ *
37149
+ * `end` is what a column of numbers wants, so digits of the same magnitude
37150
+ * sit above each other. Left unset the cell inherits the table's own
37151
+ * alignment, which is `start` for text in either writing direction.
37152
+ * `DataTable` aligns the cells it draws. A `Table`'s cells are markup the
37153
+ * consumer wrote, so the table writes nothing onto them: it publishes the
37154
+ * edge to each cell under this column as `--table-cell-align`, which
37155
+ * `@fusion.dev/helix` reads. The heading is this element's own, and
37156
+ * `@fusion.dev/helix` sets it to the same edge in either table. `end` is the
37157
+ * inline end, so in a right-to-left table it is the left.
37158
+ *
37159
+ * **Reflected, because the heading is drawn by a stylesheet and has no other
37160
+ * way to learn it.** Set as a property, which is how React sets it, an
37161
+ * unreflected edge left no attribute to select on, so the heading stayed at
37162
+ * the start over a column of digits set to the end. It is the author's
37163
+ * declaration and nothing moves it afterwards, so an attribute cannot come to
37164
+ * disagree with the element, which is the reason `open` records a custom
37165
+ * state instead. No default, so an unset column writes nothing onto its host.
36641
37166
  * - `width`: The track this column takes, as CSS.
36642
37167
  *
36643
37168
  * A single track value, so anything valid in `grid-template-columns` works:
@@ -38218,11 +38743,10 @@ export type CustomElements = {
38218
38743
  *
38219
38744
  * Custom selectors for styling elements within the component.
38220
38745
  *
38221
- * - `connector`: The line arriving at this entry.
38222
38746
  * - `content`: What happened, and the time above it.
38223
38747
  * - `dot`: The mark drawn where nothing was slotted for one.
38224
38748
  * - `marker`: The mark on the line.
38225
- * - `rail`: The column holding the mark and the line.
38749
+ * - `rail`: The column holding the mark and the line. Both halves of the line are drawn on the rail, which is `::part(rail)::before` and `::after` from a consumer's sheet: this tier ships no CSS, so a box it renders for one to paint is an empty child costing whatever the consumer's own layout charges for a child. `ListItem` measured that.
38226
38750
  * - `time`: When it happened.
38227
38751
  *
38228
38752
  * ## CSS States
@@ -38663,12 +39187,11 @@ export type CustomElements = {
38663
39187
  * Custom selectors for styling elements within the component.
38664
39188
  *
38665
39189
  * - `indicator`: The moving marker behind the selected item.
38666
- * - `divider`: The rule after an inline label, separating it from the items.
38667
39190
  * - `feedback`: What is wrong with it.
38668
39191
  * - `hint`: Help under the row, while nothing is wrong.
38669
39192
  * - `label`: The question, over the row.
38670
39193
  * - `row`: The line the track sits on, with whatever flanks it.
38671
- * - `track`: The bar the items sit in.
39194
+ * - `track`: The bar the items sit in. The rule after an inline label, separating it from the items, is drawn on the bar, which is `::part(track)::before` from a consumer's sheet: this tier ships no CSS, so a box it renders for one to paint is an empty child costing whatever the consumer's own layout charges for a child. `ListItem` measured that.
38672
39195
  *
38673
39196
  * ## CSS States
38674
39197
  *
@@ -40245,8 +40768,7 @@ export type CustomElements = {
40245
40768
  * - `failure`: What is said when the source will not play.
40246
40769
  * - `forward`: The control that goes on ten seconds.
40247
40770
  * - `fullscreen`: The whole screen, and back.
40248
- * - `loading`: What is said while the picture waits for more of itself.
40249
- * - `loading-mark`: The part of that which spins.
40771
+ * - `loading`: What is said while the picture waits for more of itself. The part of that which spins is drawn on it, which is `::part(loading)::before` from a consumer's sheet: this tier ships no CSS, so a box it renders for one to paint is an empty child costing whatever the consumer's own layout charges for a child. `ListItem` measured that.
40250
40772
  * - `more`: The button that opens it.
40251
40773
  * - `mute`: Sound on and off.
40252
40774
  * - `next`: Asks for the next item, where it was asked for.
@@ -41314,6 +41836,10 @@ export type CustomElementsSolidJs = {
41314
41836
  * Component attributes and properties that can be applied to the element or by using JavaScript.
41315
41837
  *
41316
41838
  * - `shape`: Whether the avatar is a circle or a rounded square.
41839
+ *
41840
+ * `rounded` and not `square`, which is the sharp-cornered pole of the same
41841
+ * axis and what `QrCode` draws with it. This corner is `radii-md`, so the word
41842
+ * for it is the one the registry already has.
41317
41843
  * - `size`: Edge length of the avatar.
41318
41844
  * - `name`: Name of the person or entity.
41319
41845
  *
@@ -41606,18 +42132,12 @@ export type CustomElementsSolidJs = {
41606
42132
  *
41607
42133
  * Absent falls back to the table's own caption, which is usually the right
41608
42134
  * words and is already written.
41609
- * - `direction`: Whether the categories run down the side rather than along the bottom.
41610
- *
41611
- * Absent is columns. `horizontal` is the one to reach for when the category
41612
- * names are words rather than dates: a row of long names either overlaps or
41613
- * turns on its side, and neither is as readable as putting them down the left
41614
- * where they read normally.
41615
42135
  * - `gridlines`: Which rules are drawn across the plot, if any.
41616
42136
  *
41617
42137
  * Absent draws none. `value` rules the axis the columns are *measured* on,
41618
42138
  * `category` rules the axis they are *arranged* on with one through each
41619
42139
  * group, and `both` draws both. Which of those is horizontal turns with
41620
- * `direction`, because a rule belongs to an axis and not to a screen edge.
42140
+ * `orientation`, because a rule belongs to an axis and not to a screen edge.
41621
42141
  *
41622
42142
  * **A bare `gridlines` means `value`**, and so does anything unrecognized: an
41623
42143
  * unrecognized value that draws nothing is indistinguishable from the
@@ -41651,6 +42171,15 @@ export type CustomElementsSolidJs = {
41651
42171
  * A line among columns measures from zero, because the columns do and they
41652
42172
  * share the axis. So does a line on the second scale, which is that scale's
41653
42173
  * own rule rather than this one's.
42174
+ * - `orientation`: Whether the categories run down the side rather than along the bottom.
42175
+ *
42176
+ * Absent is columns. `horizontal` is the one to reach for when the category
42177
+ * names are words rather than dates: a row of long names either overlaps or
42178
+ * turns on its side, and neither is as readable as putting them down the left
42179
+ * where they read normally.
42180
+ *
42181
+ * `orientation` and not `orientation`, which `Trend` uses in the same group for
42182
+ * which way a number moved.
41654
42183
  * - `secondary`: Which series are measured against a scale of their own, by name.
41655
42184
  *
41656
42185
  * Separated and matched the way `lines` is, against the column headings the
@@ -42642,9 +43171,9 @@ export type CustomElementsSolidJs = {
42642
43171
  * - `controls-placement`/`controlsPlacement`: Which side of the slides the arrows sit on.
42643
43172
  *
42644
43173
  * The same four sides as `indicatorPlacement` and the same default, so a
42645
- * carousel that moves only one of them keeps the other where it was.
42646
- * `inline-start` or `inline-end` stacks the arrows into a column, which is
42647
- * what a vertical track usually wants.
43174
+ * carousel that moves only one of them keeps the other where it was. `start`
43175
+ * or `end` stacks the arrows into a column, which is what a vertical track
43176
+ * usually wants.
42648
43177
  *
42649
43178
  * `overlay` puts them on the slides, at the track's own edges, which is what a
42650
43179
  * full-bleed carousel wants: the slide is the page and the controls are on it
@@ -42671,8 +43200,9 @@ export type CustomElementsSolidJs = {
42671
43200
  * is a column and the same question is `align-self`. A consumer should not
42672
43201
  * have to know which of those two words their edge wanted.
42673
43202
  *
42674
- * Logical, like the placement: `start` is the left in English and the right in
42675
- * Arabic on a horizontal run, and the top on a vertical one.
43203
+ * Logical, like the placement's own `start` and `end`: `start` is the left in
43204
+ * English and the right in Arabic on a horizontal run, and the top on a
43205
+ * vertical one.
42676
43206
  *
42677
43207
  * Unset splits the row, dots to the start and arrows to the end, which is
42678
43208
  * what keeps two items in one grid cell from landing on each other. Beside the
@@ -42682,16 +43212,22 @@ export type CustomElementsSolidJs = {
42682
43212
  * exist to avoid.
42683
43213
  * - `indicator-placement`/`indicatorPlacement`: Which side of the slides the dots sit on.
42684
43214
  *
42685
- * Unset is `block-end`, under them. `block-start` puts them above,
42686
- * `inline-start` and `inline-end` beside, where a run of dots becomes a
42687
- * column.
43215
+ * Unset is `bottom`, under them. `top` puts them above, `start` and `end`
43216
+ * beside, where a run of dots becomes a column.
43217
+ *
43218
+ * **The sides of the content, not positions along a bar.** `start` and `end`
43219
+ * are the logical ones and they are logical because that axis flips: a
43220
+ * carousel with its dots at the start should put them on the right in Arabic
43221
+ * without being told. `top` and `bottom` are the block edges, which flip in
43222
+ * no writing mode this library draws for, so the plain word is the honest one
43223
+ * and `block-start` would be jargon standing in for it.
42688
43224
  *
42689
- * **The sides of the content, not positions along a bar**, and logical names
42690
- * rather than `top`/`left`: an `inline-start` carousel should put its dots on
42691
- * the right in Arabic without being told.
43225
+ * **`Drawer` and `Toast` say it in exactly these four words**, and one
43226
+ * vocabulary across the three is worth more than each family's own: a
43227
+ * consumer who has placed a drawer knows where a carousel's dots go.
42692
43228
  *
42693
- * Independent of `controlsPlacement`. Both default to the block end, where
42694
- * they share the row and split it, dots to the start and arrows to the end,
43229
+ * Independent of `controlsPlacement`. Both default to the bottom, where they
43230
+ * share the row and split it, dots to the start and arrows to the end,
42695
43231
  * arrived at by two defaults rather than by a rule about the pair, so moving
42696
43232
  * one leaves the other alone.
42697
43233
  * - `autoplay`: Whether the carousel advances on its own.
@@ -43465,18 +44001,30 @@ export type CustomElementsSolidJs = {
43465
44001
  *
43466
44002
  * Component attributes and properties that can be applied to the element or by using JavaScript.
43467
44003
  *
43468
- * - `variant`: How the choice presents itself.
44004
+ * - `separation`: Where the choice's own surface ends.
44005
+ *
44006
+ * The question `separation` asks everywhere else, asked of one option, so it
44007
+ * is that word: what these values pick is a surface, and `plain` is already
44008
+ * the registry's own word for the answer this family used it for. `Radio`
44009
+ * takes the same three for the same reason.
43469
44010
  *
43470
- * - `plain` is the default and is never written: a box beside its words,
44011
+ * - `plain` is the resting one and is never written: a box beside its words,
43471
44012
  * which is what a list of choices should be almost always.
43472
- * - `card` puts it in a bounded surface, for options that need room to
44013
+ * - `outlined` puts it in a bounded surface, for options that need room to
43473
44014
  * explain themselves: a description, an icon, a price. It is the half a
43474
44015
  * `data-card` link cannot do, because a link reports no value and belongs
43475
44016
  * to no group, so a card that is genuinely an answer has to be this.
44017
+ * - `filled` is that same card on a ground of its own with no edge, which is
44018
+ * what a column of options wants where a hairline around every one of them
44019
+ * is a grid of lines rather than a set of answers.
43476
44020
  *
43477
- * The box stays in both. A card whose only marker was its own border would
43478
- * ask a reader to compare surfaces across a row to find the answer, and would
43479
- * leave nothing for a high-contrast display.
44021
+ * **`elevated` is the one value of the axis this family does not take.** A
44022
+ * raised choice competes with a dialog: the top layer is where a thing that
44023
+ * interrupts you lives, and an option in a form is not one of those.
44024
+ *
44025
+ * The box stays in all of them. A card whose only marker was its own border
44026
+ * would ask a reader to compare surfaces across a row to find the answer, and
44027
+ * would leave nothing for a high-contrast display.
43480
44028
  * - `checked`: Whether the control is checked.
43481
44029
  *
43482
44030
  * One property rather than two. Writing always applies;
@@ -44407,9 +44955,8 @@ export type CustomElementsSolidJs = {
44407
44955
  * - `footer`: The row holding the value and the tools.
44408
44956
  * - `format`: The control that changes the syntax the value is written in.
44409
44957
  * - `format-button`: The inner control.
44410
- * - `grid`: The saturation and brightness square.
44958
+ * - `grid`: The saturation and brightness square. The mark showing where in the square the color sits is drawn on the square itself, which is `::part(grid)::after` from a consumer's sheet: the two channels are already on the square as `--color-picker-saturation` and `--color-picker-brightness`, so a box would have carried nothing, and this tier ships no CSS.
44411
44959
  * - `grid-brightness`: The range input for its vertical axis.
44412
- * - `grid-handle`: The mark showing where in the square the color sits.
44413
44960
  * - `grid-saturation`: The range input for the square's horizontal axis.
44414
44961
  * - `sample`: The chip of the current color, which copies it when pressed.
44415
44962
  * - `swatch`: One preset.
@@ -46028,9 +46575,12 @@ export type CustomElementsSolidJs = {
46028
46575
  * width so a column of numbers lines up by its digits. Only with
46029
46576
  * `direction="row"`: stacked, a label and its value share one edge already.
46030
46577
  *
46031
- * Flex's word for the same thing, and a grid rather than a flex row
46032
- * underneath, so the labels still share one column while the values share an
46033
- * end.
46578
+ * Flex's value for the same idea, under a shorter name than Flex's own:
46579
+ * there it is `justify-content`, the CSS property it sets, and here the
46580
+ * underlying layout is a grid handing an edge down to each item as a custom
46581
+ * property, so the labels still share one column while the values share an
46582
+ * end. Naming a property this does not set after it would be the wrong kind
46583
+ * of precision.
46034
46584
  * - `width`: How wide the list is.
46035
46585
  *
46036
46586
  * Absent, it fills the row it is in. `auto` is as wide as its widest pair,
@@ -46115,16 +46665,6 @@ export type CustomElementsSolidJs = {
46115
46665
  *
46116
46666
  * Component attributes and properties that can be applied to the element or by using JavaScript.
46117
46667
  *
46118
- * - `align`: Which way the panel's contents read.
46119
- *
46120
- * One property for the whole panel rather than one per region. The regions are
46121
- * never mixed in practice: a dialog that asks a short question centers its
46122
- * mark, its title, its sentence and its buttons together, and a dialog holding
46123
- * a form runs all four from the start. Three properties would be three ways to
46124
- * write the same two arrangements, and a fourth way to get one of them wrong.
46125
- *
46126
- * Unset is `start` and stays unset, so a reflected default cannot appear on a
46127
- * host whose server output never had it.
46128
46668
  * - `size`: How wide the panel is allowed to be.
46129
46669
  *
46130
46670
  * Steps rather than a number, because a dialog's width is a fact about what is
@@ -46141,9 +46681,27 @@ export type CustomElementsSolidJs = {
46141
46681
  * rule's own test is whether two of them sitting together could legitimately
46142
46682
  * differ, and it is answering "a ragged row is unwritable". Two dialogs never
46143
46683
  * sit together. One is on screen at a time, in the top layer, and it is the
46144
- * region rather than a control in one, which is the same reason `Avatar` and
46145
- * `Spinner` keep theirs. Not `appearance`, which says how a thing reads
46146
- * rather than how wide it is.
46684
+ * region rather than a control in one, which is the other half of the axis's
46685
+ * domain: the rest of it is pictures, which are not controls either. Not
46686
+ * `appearance`, which says how a thing reads rather than how wide it is.
46687
+ * - `text-align`/`textAlign`: Which way the panel's contents read.
46688
+ *
46689
+ * **Text alignment, and the name says so.** `Flex` and `Grid` ask the CSS
46690
+ * box-alignment question, where things sit in a container, and they are named
46691
+ * for the properties they mirror; this one is `text-align` on a panel of
46692
+ * prose, and `Table.Column` answers the same question under the same name.
46693
+ * One word for both questions is how a consumer who learned it on a layout
46694
+ * writes it here and gets no error, a value a component does not have leaving
46695
+ * the default in place and looking deliberate.
46696
+ *
46697
+ * One property for the whole panel rather than one per region. The regions are
46698
+ * never mixed in practice: a dialog that asks a short question centers its
46699
+ * mark, its title, its sentence and its buttons together, and a dialog holding
46700
+ * a form runs all four from the start. Three properties would be three ways to
46701
+ * write the same two arrangements, and a fourth way to get one of them wrong.
46702
+ *
46703
+ * Unset is `start` and stays unset, so a reflected default cannot appear on a
46704
+ * host whose server output never had it.
46147
46705
  * - `open`: Whether the element is open.
46148
46706
  *
46149
46707
  * One property, not two, so `dialog.open` answers the question anyone
@@ -47970,11 +48528,30 @@ export type CustomElementsSolidJs = {
47970
48528
  *
47971
48529
  * Component attributes and properties that can be applied to the element or by using JavaScript.
47972
48530
  *
47973
- * - `align`: Alignment across the direction.
48531
+ * - `align-items`/`alignItems`: Alignment across the direction, which is `align-items`.
48532
+ *
48533
+ * **Named for the CSS property it sets, because it is that property.** A flex
48534
+ * container is the one place where the box-alignment words are already the
48535
+ * reader's, so a shorter name would be a second vocabulary for something they
48536
+ * can already say, and `align` alone is the word four other families use for
48537
+ * four other questions: `Dialog` and `Table.Column` mean `text-align` by it.
48538
+ *
48539
+ * **It also keeps the name out of the browser's way.** `align` is a legacy
48540
+ * HTML presentational attribute mapped to `text-align` on any element that
48541
+ * carries one, this one included: measured, an invented tag with
48542
+ * `align="center"` computes centered text too, so it is nothing to do with
48543
+ * being a known element. A row that carried it therefore centered the text
48544
+ * inside every field in it, through a hint no rule here declares and none can
48545
+ * see, and the fix is a name the platform has no opinion about rather than a
48546
+ * guard against the hint.
47974
48547
  * - `direction`: Whether items run across or down.
47975
48548
  * - `gap`: Space between items, named on the space scale.
47976
48549
  * - `inline`: Flows with surrounding text instead of taking the full width.
47977
- * - `justify`: Distribution along the direction.
48550
+ * - `justify-content`/`justifyContent`: Distribution along the direction, which is `justify-content`.
48551
+ *
48552
+ * Named for the property it sets, the way `alignItems` is. `between` and
48553
+ * `around` drop the `space-` prefix and nothing else does, because those two
48554
+ * are the only values whose CSS spelling is two words.
47978
48555
  * - `wrap`: Whether items wrap onto more lines.
47979
48556
  * - `whenSettled`: Resolves a frame after the first update, when transitions are switched on.
47980
48557
  *
@@ -48112,7 +48689,19 @@ export type CustomElementsSolidJs = {
48112
48689
  *
48113
48690
  * Component attributes and properties that can be applied to the element or by using JavaScript.
48114
48691
  *
48115
- * - `align`: Alignment of each cell within its row.
48692
+ * - `align-items`/`alignItems`: Alignment of each cell within its row, which is `align-items`.
48693
+ *
48694
+ * **Named for the CSS property it sets**, the way `Flex` is, and the same
48695
+ * property on a grid: it places every cell in its row's track rather than
48696
+ * placing the tracks. No `baseline`, which `Flex` offers, because cells in a
48697
+ * row of a grid are boxes of unrelated content and lining their first lines
48698
+ * up is a thing a reader asks for between siblings in a row, not between
48699
+ * cells in a table of them.
48700
+ *
48701
+ * There is no `justifyContent` here for the same reason: the tracks are
48702
+ * `1fr`, so they already fill the row and there is nothing left over to
48703
+ * distribute. `columns`, `min` and `--grid-columns` are how a grid says how
48704
+ * wide its tracks are.
48116
48705
  * - `columns`: Fixed number of equal columns.
48117
48706
  * - `gap`: Space between cells, named on the space scale.
48118
48707
  * - `min`: Minimum column width, filling as many as fit.
@@ -48741,12 +49330,13 @@ export type CustomElementsSolidJs = {
48741
49330
  *
48742
49331
  * Component attributes and properties that can be applied to the element or by using JavaScript.
48743
49332
  *
48744
- * - `rounded`: Whether the corners are cut.
49333
+ * - `shape`: Whether the corners are cut.
48745
49334
  *
48746
- * A boolean rather than a radius, because the radius is a token and the
48747
- * question a consumer is answering is whether this picture is a card's
48748
- * surface or a page's. `--image-radius` moves it for the case that is
48749
- * neither.
49335
+ * The axis and not a boolean, because `rounded` is a registered word and a
49336
+ * private spelling of a registry question is what `appearance` was retired
49337
+ * for. Not a radius either: the radius is a token and the question a consumer
49338
+ * is answering is whether this picture is a card's surface or a page's.
49339
+ * `--image-radius` moves it for the case that is neither.
48750
49340
  * - `alt`: What it shows, for a reader who cannot see it.
48751
49341
  *
48752
49342
  * Empty is a real answer and means decoration. Omitting the attribute is not
@@ -48839,7 +49429,7 @@ export type CustomElementsSolidJs = {
48839
49429
  * - `--image-fit`: How the picture fills it. (default: `undefined`)
48840
49430
  * - `--image-placeholder-color`: The resting surface behind both stand-ins. (default: `undefined`)
48841
49431
  * - `--image-position`: Which part survives a crop. (default: `undefined`)
48842
- * - `--image-radius`: Corner radius, under `rounded`. (default: `undefined`)
49432
+ * - `--image-radius`: Corner radius, under `shape="rounded"`. (default: `undefined`)
48843
49433
  *
48844
49434
  * ## CSS Parts
48845
49435
  *
@@ -49332,10 +49922,9 @@ export type CustomElementsSolidJs = {
49332
49922
  *
49333
49923
  * Custom selectors for styling elements within the component.
49334
49924
  *
49335
- * - `entry`: One name and its swatch.
49925
+ * - `entry`: One name and its swatch. The swatch is drawn on the entry, which is `::part(entry)::before` from a consumer's sheet: the series is already on the entry as `--chart-series`, so a box would have carried nothing, and this tier ships no CSS.
49336
49926
  * - `list`: The list itself.
49337
49927
  * - `name`: One series name.
49338
- * - `swatch`: The color a series is drawn in.
49339
49928
  *
49340
49929
  * ## CSS States
49341
49930
  *
@@ -50187,7 +50776,7 @@ export type CustomElementsSolidJs = {
50187
50776
  * last reader did rather than what the author wrote. `:state(open)` carries
50188
50777
  * the resolved state for stylesheets, which is what the mirror is for.
50189
50778
  * - `default-open`/`defaultOpen`: Whether the markup declared it open. Ignored once `open` is written.
50190
- * - `full-below`/`fullBelow`: The width, in pixels, under which a card becomes a band. Zero never does.
50779
+ * - `band-below`/`bandBelow`: The width, in pixels, under which a card becomes a band. Zero never does.
50191
50780
  *
50192
50781
  * A card is a panel hung off one word, and there is no room to hang anything
50193
50782
  * off a word on a phone: the columns do not shrink past
@@ -50220,16 +50809,23 @@ export type CustomElementsSolidJs = {
50220
50809
  * - `variant`: Whether the panel is a card under the trigger or a band across the page.
50221
50810
  *
50222
50811
  * The resting one is the card, hanging off the trigger and as wide as it
50223
- * needs to be. `full` is the other shape navigations use: a band from edge to
50812
+ * needs to be. `band` is the other shape navigations use: a run from edge to
50224
50813
  * edge under the header, with its contents held to the page's own measure, so
50225
50814
  * a set of destinations too wide to sit under one word gets the whole width
50226
50815
  * to lay out in.
50227
50816
  *
50228
- * It changes where the panel goes as well as how it looks, which is why this
50229
- * tier knows about it at all: a band spans the viewport, so there is nothing
50230
- * to measure it against and nothing to flip or shift to, and the placing pass
50231
- * is told not to run. Everything else the popover gives, the top layer and
50232
- * the dismissal, is exactly what such a band needs.
50817
+ * **A band and not a width, which is why the word is not `full`.** It changes
50818
+ * where the panel goes as well as how wide it is, which is why this tier
50819
+ * knows about it at all: a band spans the viewport, so there is nothing to
50820
+ * measure it against and nothing to flip or shift to, and the placing pass is
50821
+ * told not to run. Everything else the popover gives, the top layer and the
50822
+ * dismissal, is exactly what such a band needs. `full` is the registry's word
50823
+ * for a width, and `Button` and `Dialog` are the two families answering that
50824
+ * question; borrowing it here would put a third meaning on it.
50825
+ *
50826
+ * `variant` and not an axis, for the reason the registry gives: a card under
50827
+ * a word and a band under a header are two arrangements this family has, and
50828
+ * no other family is being asked the same question.
50233
50829
  * - `whenSettled`: Resolves a frame after the first update, when transitions are switched on.
50234
50830
  *
50235
50831
  * **Named `whenSettled` because `settled` is taken four times over**, by
@@ -50303,7 +50899,7 @@ export type CustomElementsSolidJs = {
50303
50899
  *
50304
50900
  * These can be used to apply styling when a component is in a given state.
50305
50901
  *
50306
- * - `narrow`: While the page is under `full-below`, so the panel is a band whether or not one was asked for.
50902
+ * - `narrow`: While the page is under `band-below`, so the panel is a band whether or not one was asked for.
50307
50903
  * - `open`: While the panel is open, which is when the trigger reads as current.
50308
50904
  * - `settled`: Set a frame after the first render. Transitions are held off until it is, so an element never animates its own arrival.
50309
50905
  */
@@ -51975,6 +52571,13 @@ export type CustomElementsSolidJs = {
51975
52571
  * the name of the tool being run, or the file being read.
51976
52572
  * - `size`: Diameter relative to the surrounding text.
51977
52573
  *
52574
+ * **`Loader`'s three steps, because the two are swapped for each other.** An
52575
+ * orb and a spinner are the same job drawn differently, a wait a reader is
52576
+ * looking at, and a product that replaces one with the other should not find
52577
+ * that a step it was writing has stopped existing. `md` is the resting one
52578
+ * and selects nothing, landing on the base rule the way a written resting
52579
+ * value does everywhere else.
52580
+ *
51978
52581
  * Reflected because the stylesheet selects on it. The mesh is chosen from the
51979
52582
  * rendered box rather than from this, so `--orb-size` and a consumer's own
51980
52583
  * `inline-size` get the same treatment as the named steps.
@@ -52938,6 +53541,8 @@ export type CustomElementsSolidJs = {
52938
53541
  * - `--progress-color`: Fill of the part that is done. (default: `undefined`)
52939
53542
  * - `--progress-ring-size`: Diameter of the ring appearance. (default: `undefined`)
52940
53543
  * - `--progress-ring-width`: Thickness of its stroke. (default: `undefined`)
53544
+ * - `--progress-size`: Thickness of the bar. (default: `undefined`)
53545
+ * - `--progress-track-color`: Fill of the part that is not. (default: `undefined`)
52941
53546
  * - `--progress-fraction`: The value as a fraction of the range, 0 to 1. Pinned to 1 while indeterminate. (default: `undefined`)
52942
53547
  *
52943
53548
  * ## CSS Parts
@@ -53319,9 +53924,9 @@ export type CustomElementsSolidJs = {
53319
53924
  * Unnecessary under `chip`, which has no room for a circle beside its mark
53320
53925
  * and hides it already.
53321
53926
  *
53322
- * `card` only, and it is a graphic that goes rather than a radio: the control
53323
- * in the shadow root is untouched, so the row is still focusable, still
53324
- * reported to a screen reader, and still the thing a form submits.
53927
+ * A separated choice only, and it is a graphic that goes rather than a radio:
53928
+ * the control in the shadow root is untouched, so the row is still focusable,
53929
+ * still reported to a screen reader, and still the thing a form submits.
53325
53930
  *
53326
53931
  * Safe because the card already carries the answer in its surface, a raised
53327
53932
  * fill inside a primary edge and a three-pixel ring of it. Without that ring
@@ -53330,21 +53935,40 @@ export type CustomElementsSolidJs = {
53330
53935
  * Not on `Checkbox`, deliberately. A radio card with no circle is still
53331
53936
  * unmistakably one-of-many because its siblings behave that way; a checkbox
53332
53937
  * card with no box loses the only thing that says you may pick several.
53333
- * - `variant`: How the choice presents itself.
53938
+ * - `separation`: Where the choice's own surface ends.
53334
53939
  *
53335
- * - `plain` is the default and is never written: a circle beside its words,
53336
- * which is what a list of choices should be almost always.
53337
- * - `card` puts it in a bounded surface, for options that need room to
53940
+ * The question `separation` asks everywhere else, asked of one option, so it
53941
+ * is that word: what these values pick is a surface, and `plain` is already
53942
+ * the registry's own word for the answer this family used it for.
53943
+ *
53944
+ * - `plain` is the resting one and is never written: a circle beside its
53945
+ * words, which is what a list of choices should be almost always.
53946
+ * - `outlined` puts it in a bounded surface, for options that need room to
53338
53947
  * explain themselves: a description, an icon, a price. It is the half a
53339
53948
  * `data-card` link cannot do, because a link reports no value and belongs
53340
53949
  * to no group, so a card that is genuinely an answer has to be this.
53341
- * - `chip` is the answer as its own small surface, for a row of short
53342
- * choices read at a glance. It hides the circle, the surface being the
53343
- * whole mark, which is why `hide-control` says it is unnecessary here.
53344
- *
53345
- * The circle stays in both. A card whose only marker was its own border would
53346
- * ask a reader to compare surfaces across a row to find the answer, and would
53347
- * leave nothing for a high-contrast display.
53950
+ * - `filled` is that same card on a ground of its own with no edge, which is
53951
+ * what a column of choices wants where a hairline around every one of them
53952
+ * is a grid of lines rather than a set of answers.
53953
+ *
53954
+ * **`elevated` is the one value of the axis this family does not take.** A
53955
+ * raised choice competes with a dialog: the top layer is where a thing that
53956
+ * interrupts you lives, and an option in a form is not one of those, so a
53957
+ * column of lifted cards reads as a stack of floating things none of which is
53958
+ * settled.
53959
+ *
53960
+ * The circle stays in all of them. A card whose only marker was its own
53961
+ * border would ask a reader to compare surfaces across a row to find the
53962
+ * answer, and would leave nothing for a high-contrast display.
53963
+ * - `variant`: The answer as its own small surface, for a row of short choices read at a
53964
+ * glance.
53965
+ *
53966
+ * **Not a separation, which is why it is still `variant`.** The other values
53967
+ * pick where a surface ends around a row that keeps its circle and its words;
53968
+ * a chip has neither. It hides the circle, the surface being the whole mark,
53969
+ * which is why `hide-control` says it is unnecessary here, and it takes the
53970
+ * words out of the flow to be the accessible name. That removes the
53971
+ * distinction `separation` exists to make rather than answering it.
53348
53972
  * - `disabled`: Whether this one can be chosen.
53349
53973
  * - `selected`: Whether this is the current one.
53350
53974
  *
@@ -53453,10 +54077,9 @@ export type CustomElementsSolidJs = {
53453
54077
  *
53454
54078
  * Custom selectors for styling elements within the component.
53455
54079
  *
53456
- * - `box`: The circle.
54080
+ * - `box`: The circle. The dot inside it is drawn on the box itself, which is `::part(box)::after` from a consumer's sheet: this tier ships no CSS, so a box it renders for one to paint is an empty child costing whatever the consumer's own layout charges for a child. `ListItem` measured that.
53457
54081
  * - `item`: The button, which is the whole row.
53458
54082
  * - `label`: The words beside it.
53459
- * - `mark`: The dot inside it.
53460
54083
  *
53461
54084
  * ## CSS States
53462
54085
  *
@@ -53480,22 +54103,27 @@ export type CustomElementsSolidJs = {
53480
54103
  *
53481
54104
  * Component attributes and properties that can be applied to the element or by using JavaScript.
53482
54105
  *
53483
- * - `variant`: Which mark the row is drawn with.
54106
+ * - `shape`: The geometry one mark is drawn to.
53484
54107
  *
53485
- * `marks` is the star, and is what a rating means to most readers. `dots`
53486
- * drops the glyph for a plain circle, which says how much rather than how
53487
- * good: a star carries a judgment that a level of spice, a difficulty or a
53488
- * confidence has not earned.
54108
+ * The registry's word, because the question is the registry's: `Avatar`,
54109
+ * `Skeleton`, `IconButton`, `Meter` and `Progress` each ask what geometry
54110
+ * their own thing is cut to under this name, and `dots` is already a value
54111
+ * the axis holds. What is picked here is the outline of one mark and nothing
54112
+ * else, which is a shape and not a component-specific choice.
53489
54113
  *
53490
- * Both are one shape repeated and clipped to the score, so halves work in
53491
- * either, and both are only a choice of drawing. A scale whose marks are
54114
+ * `dots` drops the glyph for a plain circle, which says how much rather than
54115
+ * how good: a star carries a judgment that a level of spice, a difficulty or
54116
+ * a confidence has not earned. Either way it is one shape repeated and
54117
+ * clipped to the score, so halves work in both. A scale whose marks are
53492
54118
  * *different* drawings is a set of choices rather than a quantity: that is
53493
54119
  * `Radio.Group`, whose options already carry a value and a name each.
53494
54120
  *
53495
- * **Undefaulted, because it reflects.** A default of `marks` writes
53496
- * `variant="marks"` onto every server-rendered rating, which React holds no
53497
- * prop for and reports as a hydration mismatch. The stylesheet names only
53498
- * `dots`, so an unset one draws marks anyway.
54121
+ * **The star is the resting one and has no word**, which is the rule every
54122
+ * axis follows and is also what this family needed anyway: it reflects, so a
54123
+ * default would write the resting value onto every server-rendered rating,
54124
+ * an attribute React holds no prop for and so a hydration mismatch for each
54125
+ * one. The stylesheet names only `dots`, so an unset one draws the star by
54126
+ * landing on the base rule.
53499
54127
  * - `default-value`/`defaultValue`: The value the markup declared, which is where a reset returns to.
53500
54128
  * - `value`: What the control holds now, and what its form submits.
53501
54129
  *
@@ -54621,11 +55249,11 @@ export type CustomElementsSolidJs = {
54621
55249
  * `outlined` is what the unset frame already draws, so writing it would be
54622
55250
  * writing the resting state out.
54623
55251
  *
54624
- * **The other three fields want this too and do not have it yet.** `Input`,
54625
- * `Textarea` and `Combobox` wear the same frame from the same shared
54626
- * stylesheet, and an inline one of each is as reasonable as an inline select.
54627
- * They are left alone rather than swept, because each has a different thing
54628
- * inside the frame and guessing at three is how an axis ends up meaning four
55252
+ * **Every field wearing `field-frame.css` wants this too and does not have it
55253
+ * yet**, which this trigger is not one of: it draws its own frame below. An
55254
+ * inline number input in a toolbar is as reasonable as an inline select. They
55255
+ * are left alone rather than swept, because each has a different thing inside
55256
+ * the frame and guessing at a set of them is how an axis ends up meaning four
54629
55257
  * things, which is the fault `appearance` was retired for.
54630
55258
  * - `open`: Whether the element is open.
54631
55259
  *
@@ -56143,10 +56771,8 @@ export type CustomElementsSolidJs = {
56143
56771
  * - `description`: The line under it.
56144
56772
  * - `label`: The step's name, which is a control.
56145
56773
  * - `label-button`: The inner control.
56146
- * - `lead`: The half line arriving from the step before.
56147
56774
  * - `mark`: The glyph inside the marker: a tick, a dot, or an empty ring.
56148
56775
  * - `marker`: The shape carrying the number or the check.
56149
- * - `trail`: The half line running on to the next.
56150
56776
  *
56151
56777
  * ## CSS States
56152
56778
  *
@@ -56334,8 +56960,7 @@ export type CustomElementsSolidJs = {
56334
56960
  * - `field`: The row: the track and its label.
56335
56961
  * - `hint`: Help under the control, while nothing is wrong.
56336
56962
  * - `label`: The words beside it.
56337
- * - `thumb`: The part that moves.
56338
- * - `track`: The groove the thumb travels in.
56963
+ * - `track`: The groove. The thumb that travels in it is drawn on the groove itself, which is `::part(track)::after` from a consumer's sheet: this tier ships no CSS, so a box it renders for one to paint is an empty child costing whatever the consumer's own layout charges for a child. `ListItem` measured that.
56339
56964
  *
56340
56965
  * ## CSS States
56341
56966
  *
@@ -56418,25 +57043,6 @@ export type CustomElementsSolidJs = {
56418
57043
  *
56419
57044
  * Component attributes and properties that can be applied to the element or by using JavaScript.
56420
57045
  *
56421
- * - `align`: Which edge the values line up against.
56422
- *
56423
- * `end` is what a column of numbers wants, so digits of the same magnitude
56424
- * sit above each other. Left unset the cell inherits the table's own
56425
- * alignment, which is `start` for text in either writing direction.
56426
- * `DataTable` aligns the cells it draws. A `Table`'s cells are markup the
56427
- * consumer wrote, so the table writes nothing onto them: it publishes the
56428
- * edge to each cell under this column as `--table-cell-align`, which
56429
- * `@fusion.dev/helix` reads. The heading is this element's own, and
56430
- * `@fusion.dev/helix` sets it to the same edge in either table. `end` is the
56431
- * inline end, so in a right-to-left table it is the left.
56432
- *
56433
- * **Reflected, because the heading is drawn by a stylesheet and has no other
56434
- * way to learn it.** Set as a property, which is how React sets it, an
56435
- * unreflected `align` left no attribute to select on, so the heading stayed at
56436
- * the start over a column of digits set to the end. It is the author's
56437
- * declaration and nothing moves it afterwards, so an attribute cannot come to
56438
- * disagree with the element, which is the reason `open` records a custom
56439
- * state instead. No default, so an unset column writes nothing onto its host.
56440
57046
  * - `field`: The key this column reads out of a row.
56441
57047
  *
56442
57048
  * Dot paths resolve, so `field="owner.name"` reads a nested value: a result
@@ -56468,6 +57074,33 @@ export type CustomElementsSolidJs = {
56468
57074
  * how React sets it, an unreflected `sortable` left no attribute to match.
56469
57075
  * `false` reflects as no attribute at all, so an unset column writes nothing
56470
57076
  * onto its host.
57077
+ * - `text-align`/`textAlign`: Which edge the values line up against.
57078
+ *
57079
+ * **Text alignment, and the name says so.** `Flex` and `Grid` ask the CSS
57080
+ * box-alignment question, where a thing sits in a container, and they are
57081
+ * named for the properties they mirror; this is `text-align` down a column of
57082
+ * values, and `Dialog` answers the same question under the same name. One
57083
+ * word for both questions is how a consumer who learned it on a layout writes
57084
+ * it here and gets no error, a value a component does not have leaving the
57085
+ * default in place and looking deliberate.
57086
+ *
57087
+ * `end` is what a column of numbers wants, so digits of the same magnitude
57088
+ * sit above each other. Left unset the cell inherits the table's own
57089
+ * alignment, which is `start` for text in either writing direction.
57090
+ * `DataTable` aligns the cells it draws. A `Table`'s cells are markup the
57091
+ * consumer wrote, so the table writes nothing onto them: it publishes the
57092
+ * edge to each cell under this column as `--table-cell-align`, which
57093
+ * `@fusion.dev/helix` reads. The heading is this element's own, and
57094
+ * `@fusion.dev/helix` sets it to the same edge in either table. `end` is the
57095
+ * inline end, so in a right-to-left table it is the left.
57096
+ *
57097
+ * **Reflected, because the heading is drawn by a stylesheet and has no other
57098
+ * way to learn it.** Set as a property, which is how React sets it, an
57099
+ * unreflected edge left no attribute to select on, so the heading stayed at
57100
+ * the start over a column of digits set to the end. It is the author's
57101
+ * declaration and nothing moves it afterwards, so an attribute cannot come to
57102
+ * disagree with the element, which is the reason `open` records a custom
57103
+ * state instead. No default, so an unset column writes nothing onto its host.
56471
57104
  * - `width`: The track this column takes, as CSS.
56472
57105
  *
56473
57106
  * A single track value, so anything valid in `grid-template-columns` works:
@@ -58079,11 +58712,10 @@ export type CustomElementsSolidJs = {
58079
58712
  *
58080
58713
  * Custom selectors for styling elements within the component.
58081
58714
  *
58082
- * - `connector`: The line arriving at this entry.
58083
58715
  * - `content`: What happened, and the time above it.
58084
58716
  * - `dot`: The mark drawn where nothing was slotted for one.
58085
58717
  * - `marker`: The mark on the line.
58086
- * - `rail`: The column holding the mark and the line.
58718
+ * - `rail`: The column holding the mark and the line. Both halves of the line are drawn on the rail, which is `::part(rail)::before` and `::after` from a consumer's sheet: this tier ships no CSS, so a box it renders for one to paint is an empty child costing whatever the consumer's own layout charges for a child. `ListItem` measured that.
58087
58719
  * - `time`: When it happened.
58088
58720
  *
58089
58721
  * ## CSS States
@@ -58538,12 +59170,11 @@ export type CustomElementsSolidJs = {
58538
59170
  * Custom selectors for styling elements within the component.
58539
59171
  *
58540
59172
  * - `indicator`: The moving marker behind the selected item.
58541
- * - `divider`: The rule after an inline label, separating it from the items.
58542
59173
  * - `feedback`: What is wrong with it.
58543
59174
  * - `hint`: Help under the row, while nothing is wrong.
58544
59175
  * - `label`: The question, over the row.
58545
59176
  * - `row`: The line the track sits on, with whatever flanks it.
58546
- * - `track`: The bar the items sit in.
59177
+ * - `track`: The bar the items sit in. The rule after an inline label, separating it from the items, is drawn on the bar, which is `::part(track)::before` from a consumer's sheet: this tier ships no CSS, so a box it renders for one to paint is an empty child costing whatever the consumer's own layout charges for a child. `ListItem` measured that.
58547
59178
  *
58548
59179
  * ## CSS States
58549
59180
  *
@@ -60156,8 +60787,7 @@ export type CustomElementsSolidJs = {
60156
60787
  * - `failure`: What is said when the source will not play.
60157
60788
  * - `forward`: The control that goes on ten seconds.
60158
60789
  * - `fullscreen`: The whole screen, and back.
60159
- * - `loading`: What is said while the picture waits for more of itself.
60160
- * - `loading-mark`: The part of that which spins.
60790
+ * - `loading`: What is said while the picture waits for more of itself. The part of that which spins is drawn on it, which is `::part(loading)::before` from a consumer's sheet: this tier ships no CSS, so a box it renders for one to paint is an empty child costing whatever the consumer's own layout charges for a child. `ListItem` measured that.
60161
60791
  * - `more`: The button that opens it.
60162
60792
  * - `mute`: Sound on and off.
60163
60793
  * - `next`: Asks for the next item, where it was asked for.
@@ -60736,7 +61366,7 @@ export type CustomCssProperties = {
60736
61366
  "--image-placeholder-color"?: (string) | undefined;
60737
61367
  /** Which part survives a crop. */
60738
61368
  "--image-position"?: (string) | undefined;
60739
- /** Corner radius, under `rounded`. */
61369
+ /** Corner radius, under `shape="rounded"`. */
60740
61370
  "--image-radius"?: (string) | undefined;
60741
61371
  /** Fill behind the text. */
60742
61372
  "--input-background-color"?: (string) | undefined;
@@ -60954,6 +61584,10 @@ export type CustomCssProperties = {
60954
61584
  "--progress-ring-size"?: (string) | undefined;
60955
61585
  /** Thickness of its stroke. */
60956
61586
  "--progress-ring-width"?: (string) | undefined;
61587
+ /** Thickness of the bar. */
61588
+ "--progress-size"?: (string) | undefined;
61589
+ /** Fill of the part that is not. */
61590
+ "--progress-track-color"?: (string) | undefined;
60957
61591
  /** The value as a fraction of the range, 0 to 1. Pinned to 1 while indeterminate. */
60958
61592
  "--progress-fraction"?: (string) | undefined;
60959
61593
  /** Behind them, including the quiet zone. */