@fusion.dev/helix 0.41.1 → 0.43.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.
package/types/jsx.d.ts CHANGED
@@ -1087,13 +1087,17 @@ are interpolations, so a larger number extrapolates rather than
1087
1087
  exaggerating, and a streak whose length has passed through zero is drawn
1088
1088
  as a bar across the whole frame.
1089
1089
 
1090
- Read by the shapes made of many similar things, whether those are counted
1091
- or continuous: `streaks`, whose lanes draw a speed, a length, a width, a
1092
- spacing and a weight apiece; `particles`, whose motes draw a size, a
1093
- brightness and a wander; and `rays` and `aurora`, whose fan, bundles and
1094
- folds widen or even out. `braid`, `waves` and `flow` have a
1095
- single subject and nothing to vary, and `threads` is even on purpose, so on
1096
- those four this is inert. */
1090
+ Read by four of the eleven shapes, the ones made of many similar things,
1091
+ whether those are counted or continuous: `streaks`, whose lanes draw a
1092
+ speed, a length, a width, a spacing and a weight apiece; `particles`, whose
1093
+ motes draw a size, a brightness and a wander; and `rays` and `aurora`, whose
1094
+ fan, bundles and folds widen or even out.
1095
+
1096
+ Inert on the other seven, for three different reasons. `braid`, `waves` and
1097
+ `flow` have a single subject and nothing to vary. `threads` and `lattice`
1098
+ are even on purpose, a scatter of strands and a regular structure each being
1099
+ what it is because its members do not differ. `caustics` and `fracture` are
1100
+ populations this does not reach, which is a gap rather than a refusal. */
1097
1101
  variance?: (HelixAura["variance"]) | undefined;
1098
1102
  /** Which form the light takes. Absent is `braid`.
1099
1103
 
@@ -1185,13 +1189,17 @@ are interpolations, so a larger number extrapolates rather than
1185
1189
  exaggerating, and a streak whose length has passed through zero is drawn
1186
1190
  as a bar across the whole frame.
1187
1191
 
1188
- Read by the shapes made of many similar things, whether those are counted
1189
- or continuous: `streaks`, whose lanes draw a speed, a length, a width, a
1190
- spacing and a weight apiece; `particles`, whose motes draw a size, a
1191
- brightness and a wander; and `rays` and `aurora`, whose fan, bundles and
1192
- folds widen or even out. `braid`, `waves` and `flow` have a
1193
- single subject and nothing to vary, and `threads` is even on purpose, so on
1194
- those four this is inert. */
1192
+ Read by four of the eleven shapes, the ones made of many similar things,
1193
+ whether those are counted or continuous: `streaks`, whose lanes draw a
1194
+ speed, a length, a width, a spacing and a weight apiece; `particles`, whose
1195
+ motes draw a size, a brightness and a wander; and `rays` and `aurora`, whose
1196
+ fan, bundles and folds widen or even out.
1197
+
1198
+ Inert on the other seven, for three different reasons. `braid`, `waves` and
1199
+ `flow` have a single subject and nothing to vary. `threads` and `lattice`
1200
+ are even on purpose, a scatter of strands and a regular structure each being
1201
+ what it is because its members do not differ. `caustics` and `fracture` are
1202
+ populations this does not reach, which is a gap rather than a refusal. */
1195
1203
  "prop:variance"?: (HelixAura["variance"]) | undefined;
1196
1204
  /** Which form the light takes. Absent is `braid`.
1197
1205
 
@@ -1906,7 +1914,15 @@ export type HelixBreadcrumbsSolidJsProps = {
1906
1914
  };
1907
1915
 
1908
1916
  export type HelixButtonGroupProps = {
1909
- /** Whether the buttons are one bar or a spaced row. */
1917
+ /** Whether the buttons are one bar or a spaced row.
1918
+
1919
+ Joined by default: one control made of parts, sharing borders, reading as a
1920
+ segmented bar.
1921
+
1922
+ `spaced` is the same set with air between them, for a row of related but
1923
+ separate actions. The semantics and the joining are separate questions:
1924
+ `role="group"` and a shared name are what make a set of buttons a set, and
1925
+ `helix-flex` gives the spacing without the group. */
1910
1926
  variant?: (HelixButtonGroup["variant"]) | undefined;
1911
1927
  /** Accessible name for the group.
1912
1928
 
@@ -1934,7 +1950,15 @@ column. */
1934
1950
  };
1935
1951
 
1936
1952
  export type HelixButtonGroupSolidJsProps = {
1937
- /** Whether the buttons are one bar or a spaced row. */
1953
+ /** Whether the buttons are one bar or a spaced row.
1954
+
1955
+ Joined by default: one control made of parts, sharing borders, reading as a
1956
+ segmented bar.
1957
+
1958
+ `spaced` is the same set with air between them, for a row of related but
1959
+ separate actions. The semantics and the joining are separate questions:
1960
+ `role="group"` and a shared name are what make a set of buttons a set, and
1961
+ `helix-flex` gives the spacing without the group. */
1938
1962
  "prop:variant"?: (HelixButtonGroup["variant"]) | undefined;
1939
1963
  /** Accessible name for the group.
1940
1964
 
@@ -2802,7 +2826,7 @@ server markup never had, which React reports as a mismatch. The one-across
2802
2826
  case is the absent attribute, and the styles read it that way. */
2803
2827
  perView?: (HelixCarousel["perView"]) | undefined;
2804
2828
 
2805
- /** Fired when the slide in view changes, with its index. Cancelable: refusing it takes the decision and nothing moves. */
2829
+ /** Fired when the slide in view changes, with its index. Cancelable where the carousel is about to move: refusing a control or an indicator takes the decision and nothing moves. A drag has already moved the track, so that one announces after the fact and refusing it does nothing. See `handleScroll`. */
2806
2830
  "onhelix-select"?: ((e: HelixCarouselHelixSelectElementEvent) => void) | undefined;
2807
2831
  };
2808
2832
 
@@ -3032,7 +3056,7 @@ its attribute on upgrade, and the host then carries something a consumer's
3032
3056
  server markup never had, which React reports as a mismatch. The one-across
3033
3057
  case is the absent attribute, and the styles read it that way. */
3034
3058
  "prop:perView"?: (HelixCarousel["perView"]) | undefined;
3035
- /** Fired when the slide in view changes, with its index. Cancelable: refusing it takes the decision and nothing moves. */
3059
+ /** Fired when the slide in view changes, with its index. Cancelable where the carousel is about to move: refusing a control or an indicator takes the decision and nothing moves. A drag has already moved the track, so that one announces after the fact and refusing it does nothing. See `handleScroll`. */
3036
3060
  "on:helix-select"?: ((e: HelixCarouselHelixSelectElementEvent) => void) | undefined;
3037
3061
 
3038
3062
  /** Set the innerHTML of the element */
@@ -6604,9 +6628,36 @@ export type HelixDialogHelixBeforeOpenElementEvent =
6604
6628
  HelixDialogElementEvent<HelixBeforeOpenEvent>;
6605
6629
 
6606
6630
  export type HelixDialogProps = {
6607
- /** Whether the panel's contents run from the start or center on it. */
6631
+ /** Which way the panel's contents read.
6632
+
6633
+ One property for the whole panel rather than one per region. The regions are
6634
+ never mixed in practice: a dialog that asks a short question centers its
6635
+ mark, its title, its sentence and its buttons together, and a dialog holding
6636
+ a form runs all four from the start. Three properties would be three ways to
6637
+ write the same two arrangements, and a fourth way to get one of them wrong.
6638
+
6639
+ Unset is `start` and stays unset, so a reflected default cannot appear on a
6640
+ host whose server output never had it. */
6608
6641
  align?: (HelixDialog["align"]) | undefined;
6609
- /** How wide the panel is allowed to be. */
6642
+ /** How wide the panel is allowed to be.
6643
+
6644
+ Steps rather than a number, because a dialog's width is a fact about what is
6645
+ in it: a confirmation is narrow, a form is not, and picking pixels per
6646
+ dialog is how a product ends up with nine of them. `full` takes the viewport
6647
+ less the same inset every step already stops short by, so a takeover is one
6648
+ more rung and not a second property.
6649
+
6650
+ Unset is `md`, read as `:host(:not([size]))` beside `:host([size="md"])`
6651
+ rather than assigned here, for the reason `Drawer.placement` gives: this
6652
+ reflects, and a default would put `size="md"` into markup no consumer wrote.
6653
+
6654
+ `size` is right despite the rule that controls have no size, because that
6655
+ rule's own test is whether two of them sitting together could legitimately
6656
+ differ, and it is answering "a ragged row is unwritable". Two dialogs never
6657
+ sit together. One is on screen at a time, in the top layer, and it is the
6658
+ region rather than a control in one, which is the same reason `Avatar` and
6659
+ `Spinner` keep theirs. Not `appearance`, which says how a thing reads
6660
+ rather than how wide it is. */
6610
6661
  size?: (HelixDialog["size"]) | undefined;
6611
6662
  /** Whether the element is open.
6612
6663
 
@@ -6682,9 +6733,36 @@ survives to it and a consumer reading one back gets what they wrote. */
6682
6733
  };
6683
6734
 
6684
6735
  export type HelixDialogSolidJsProps = {
6685
- /** Whether the panel's contents run from the start or center on it. */
6736
+ /** Which way the panel's contents read.
6737
+
6738
+ One property for the whole panel rather than one per region. The regions are
6739
+ never mixed in practice: a dialog that asks a short question centers its
6740
+ mark, its title, its sentence and its buttons together, and a dialog holding
6741
+ a form runs all four from the start. Three properties would be three ways to
6742
+ write the same two arrangements, and a fourth way to get one of them wrong.
6743
+
6744
+ Unset is `start` and stays unset, so a reflected default cannot appear on a
6745
+ host whose server output never had it. */
6686
6746
  "prop:align"?: (HelixDialog["align"]) | undefined;
6687
- /** How wide the panel is allowed to be. */
6747
+ /** How wide the panel is allowed to be.
6748
+
6749
+ Steps rather than a number, because a dialog's width is a fact about what is
6750
+ in it: a confirmation is narrow, a form is not, and picking pixels per
6751
+ dialog is how a product ends up with nine of them. `full` takes the viewport
6752
+ less the same inset every step already stops short by, so a takeover is one
6753
+ more rung and not a second property.
6754
+
6755
+ Unset is `md`, read as `:host(:not([size]))` beside `:host([size="md"])`
6756
+ rather than assigned here, for the reason `Drawer.placement` gives: this
6757
+ reflects, and a default would put `size="md"` into markup no consumer wrote.
6758
+
6759
+ `size` is right despite the rule that controls have no size, because that
6760
+ rule's own test is whether two of them sitting together could legitimately
6761
+ differ, and it is answering "a ragged row is unwritable". Two dialogs never
6762
+ sit together. One is on screen at a time, in the top layer, and it is the
6763
+ region rather than a control in one, which is the same reason `Avatar` and
6764
+ `Spinner` keep theirs. Not `appearance`, which says how a thing reads
6765
+ rather than how wide it is. */
6688
6766
  "prop:size"?: (HelixDialog["size"]) | undefined;
6689
6767
  /** Whether the element is open.
6690
6768
 
@@ -12010,15 +12088,27 @@ Written by the listbox. */
12010
12088
 
12011
12089
  `<option selected>` reflects to `defaultSelected` and `option.selected` is
12012
12090
  live state that does not reflect, and those are two different facts. This
12013
- element has one `selected` doing both jobs, so what is captured here is what
12014
- the markup said at upgrade, before anything could overwrite it: read the
12015
- attribute later and the listbox's own writes answer instead.
12016
-
12017
- **The deeper half is 302 and is not this.** State reflecting under the
12018
- declaration's name is the fault `TreeItem` already avoids by mirroring to
12019
- `data-selected`, and four families here still write `selected` back into a
12020
- consumer's markup. Splitting them means moving what every stylesheet selects
12021
- on, which is a change of its own rather than a property being added. */
12091
+ element has one `selected` doing both jobs, so the declaration is the
12092
+ attribute and the state is the property.
12093
+
12094
+ **The attribute, read when it is asked for, and never a snapshot taken in
12095
+ the constructor.** A field initializer runs there, and an element the HTML
12096
+ parser created has none of its attributes yet at that moment: measured on
12097
+ this element, on `Radio` and on `Toggle`, `<helix-option value="a"
12098
+ selected>` reported `defaultSelected` as `false` both from parsed markup
12099
+ and from `createElement` followed by `setAttribute`, which is every way a
12100
+ consumer writes one. The snapshot could only ever be true for an element
12101
+ already in the document when `customElements.define` ran.
12102
+
12103
+ Nothing overwrites it either, which is what makes reading it late correct
12104
+ rather than merely later: `selected` does not reflect, for the reason
12105
+ `willUpdate` records, so the listbox's writes never reach the attribute and
12106
+ what it says is what the markup said.
12107
+
12108
+ **The deeper half is not this.** State reflecting under the declaration's
12109
+ name is the fault `TreeItem` avoids by mirroring to `data-selected`.
12110
+ Splitting them means moving what every stylesheet selects on, which is a
12111
+ change of its own rather than a property being added. */
12022
12112
  defaultSelected?: (HelixOption["defaultSelected"]) | undefined;
12023
12113
 
12024
12114
  /** Fired when this choice is made. Cancelable: refusing it takes the decision and nothing moves. */
@@ -12105,15 +12195,27 @@ Written by the listbox. */
12105
12195
 
12106
12196
  `<option selected>` reflects to `defaultSelected` and `option.selected` is
12107
12197
  live state that does not reflect, and those are two different facts. This
12108
- element has one `selected` doing both jobs, so what is captured here is what
12109
- the markup said at upgrade, before anything could overwrite it: read the
12110
- attribute later and the listbox's own writes answer instead.
12111
-
12112
- **The deeper half is 302 and is not this.** State reflecting under the
12113
- declaration's name is the fault `TreeItem` already avoids by mirroring to
12114
- `data-selected`, and four families here still write `selected` back into a
12115
- consumer's markup. Splitting them means moving what every stylesheet selects
12116
- on, which is a change of its own rather than a property being added. */
12198
+ element has one `selected` doing both jobs, so the declaration is the
12199
+ attribute and the state is the property.
12200
+
12201
+ **The attribute, read when it is asked for, and never a snapshot taken in
12202
+ the constructor.** A field initializer runs there, and an element the HTML
12203
+ parser created has none of its attributes yet at that moment: measured on
12204
+ this element, on `Radio` and on `Toggle`, `<helix-option value="a"
12205
+ selected>` reported `defaultSelected` as `false` both from parsed markup
12206
+ and from `createElement` followed by `setAttribute`, which is every way a
12207
+ consumer writes one. The snapshot could only ever be true for an element
12208
+ already in the document when `customElements.define` ran.
12209
+
12210
+ Nothing overwrites it either, which is what makes reading it late correct
12211
+ rather than merely later: `selected` does not reflect, for the reason
12212
+ `willUpdate` records, so the listbox's writes never reach the attribute and
12213
+ what it says is what the markup said.
12214
+
12215
+ **The deeper half is not this.** State reflecting under the declaration's
12216
+ name is the fault `TreeItem` avoids by mirroring to `data-selected`.
12217
+ Splitting them means moving what every stylesheet selects on, which is a
12218
+ change of its own rather than a property being added. */
12117
12219
  "prop:defaultSelected"?: (HelixOption["defaultSelected"]) | undefined;
12118
12220
  /** Fired when this choice is made. Cancelable: refusing it takes the decision and nothing moves. */
12119
12221
  "on:helix-select"?: ((e: HelixOptionHelixSelectElementEvent) => void) | undefined;
@@ -13512,9 +13614,22 @@ Written by the group. */
13512
13614
 
13513
13615
  `<option selected>` reflects to `defaultSelected` and `option.selected` is
13514
13616
  live state that does not reflect, and those are two different facts. This
13515
- element has one `selected` doing both jobs, so what is captured here is what
13516
- the markup said at upgrade, before anything could overwrite it: read the
13517
- attribute later and the listbox's own writes answer instead.
13617
+ element has one `selected` doing both jobs, so the declaration is the
13618
+ attribute and the state is the property.
13619
+
13620
+ **The attribute, read when it is asked for, and never a snapshot taken in
13621
+ the constructor.** A field initializer runs there, and an element the HTML
13622
+ parser created has none of its attributes yet at that moment: measured on
13623
+ this element, on `Option` and on `Toggle`, `<helix-radio value="a"
13624
+ selected>` reported `defaultSelected` as `false` both from parsed markup
13625
+ and from `createElement` followed by `setAttribute`, which is every way a
13626
+ consumer writes one. The snapshot could only ever be true for an element
13627
+ already in the document when `customElements.define` ran.
13628
+
13629
+ Nothing overwrites it either, which is what makes reading it late correct
13630
+ rather than merely later: `selected` does not reflect, for the reason
13631
+ `willUpdate` records, so the group's writes never reach the attribute and
13632
+ what it says is what the markup said.
13518
13633
 
13519
13634
  **The deeper half is not this.** State reflecting under the declaration's
13520
13635
  name is the fault `TreeItem` avoids by mirroring to `data-selected`.
@@ -13589,9 +13704,22 @@ Written by the group. */
13589
13704
 
13590
13705
  `<option selected>` reflects to `defaultSelected` and `option.selected` is
13591
13706
  live state that does not reflect, and those are two different facts. This
13592
- element has one `selected` doing both jobs, so what is captured here is what
13593
- the markup said at upgrade, before anything could overwrite it: read the
13594
- attribute later and the listbox's own writes answer instead.
13707
+ element has one `selected` doing both jobs, so the declaration is the
13708
+ attribute and the state is the property.
13709
+
13710
+ **The attribute, read when it is asked for, and never a snapshot taken in
13711
+ the constructor.** A field initializer runs there, and an element the HTML
13712
+ parser created has none of its attributes yet at that moment: measured on
13713
+ this element, on `Option` and on `Toggle`, `<helix-radio value="a"
13714
+ selected>` reported `defaultSelected` as `false` both from parsed markup
13715
+ and from `createElement` followed by `setAttribute`, which is every way a
13716
+ consumer writes one. The snapshot could only ever be true for an element
13717
+ already in the document when `customElements.define` ran.
13718
+
13719
+ Nothing overwrites it either, which is what makes reading it late correct
13720
+ rather than merely later: `selected` does not reflect, for the reason
13721
+ `willUpdate` records, so the group's writes never reach the attribute and
13722
+ what it says is what the markup said.
13595
13723
 
13596
13724
  **The deeper half is not this.** State reflecting under the declaration's
13597
13725
  name is the fault `TreeItem` avoids by mirroring to `data-selected`.
@@ -18231,9 +18359,22 @@ export type HelixToggleProps = {
18231
18359
 
18232
18360
  `<option selected>` reflects to `defaultSelected` and `option.selected` is
18233
18361
  live state that does not reflect, and those are two different facts. This
18234
- element has one `selected` doing both jobs, so what is captured here is what
18235
- the markup said at upgrade, before anything could overwrite it: read the
18236
- attribute later and the listbox's own writes answer instead.
18362
+ element has one `selected` doing both jobs, so the declaration is the
18363
+ attribute and the state is the property.
18364
+
18365
+ **The attribute, read when it is asked for, and never a snapshot taken in
18366
+ the constructor.** A field initializer runs there, and an element the HTML
18367
+ parser created has none of its attributes yet at that moment: measured on
18368
+ this element, on `Option` and on `Radio`, `<helix-toggle value="light"
18369
+ selected>` reported `defaultSelected` as `false` both from parsed markup
18370
+ and from `createElement` followed by `setAttribute`, which is every way a
18371
+ consumer writes one. The snapshot could only ever be true for an element
18372
+ already in the document when `customElements.define` ran.
18373
+
18374
+ Nothing overwrites it either, which is what makes reading it late correct
18375
+ rather than merely later: `selected` does not reflect, for the reason
18376
+ `willUpdate` records, so the group's writes never reach the attribute and
18377
+ what it says is what the markup said.
18237
18378
 
18238
18379
  **The deeper half is not this.** State reflecting under the declaration's
18239
18380
  name is the fault `TreeItem` avoids by mirroring to `data-selected`.
@@ -18264,9 +18405,22 @@ export type HelixToggleSolidJsProps = {
18264
18405
 
18265
18406
  `<option selected>` reflects to `defaultSelected` and `option.selected` is
18266
18407
  live state that does not reflect, and those are two different facts. This
18267
- element has one `selected` doing both jobs, so what is captured here is what
18268
- the markup said at upgrade, before anything could overwrite it: read the
18269
- attribute later and the listbox's own writes answer instead.
18408
+ element has one `selected` doing both jobs, so the declaration is the
18409
+ attribute and the state is the property.
18410
+
18411
+ **The attribute, read when it is asked for, and never a snapshot taken in
18412
+ the constructor.** A field initializer runs there, and an element the HTML
18413
+ parser created has none of its attributes yet at that moment: measured on
18414
+ this element, on `Option` and on `Radio`, `<helix-toggle value="light"
18415
+ selected>` reported `defaultSelected` as `false` both from parsed markup
18416
+ and from `createElement` followed by `setAttribute`, which is every way a
18417
+ consumer writes one. The snapshot could only ever be true for an element
18418
+ already in the document when `customElements.define` ran.
18419
+
18420
+ Nothing overwrites it either, which is what makes reading it late correct
18421
+ rather than merely later: `selected` does not reflect, for the reason
18422
+ `willUpdate` records, so the group's writes never reach the attribute and
18423
+ what it says is what the markup said.
18270
18424
 
18271
18425
  **The deeper half is not this.** State reflecting under the declaration's
18272
18426
  name is the fault `TreeItem` avoids by mirroring to `data-selected`.
@@ -19462,7 +19616,35 @@ export type HelixVideoHelixPreviousElementEvent =
19462
19616
  HelixVideoElementEvent<HelixPreviousEvent>;
19463
19617
 
19464
19618
  export type HelixVideoProps = {
19465
- /** Whether the bar floats on the picture or sits on its own ground. */
19619
+ /** How the control bar sits on the picture.
19620
+
19621
+ `separation` and not `emphasis`: all three states say what the bar sits on,
19622
+ which is where it separates from the picture, rather than how loud it is.
19623
+
19624
+ Absent is the default and is what a player looks like, and what the
19625
+ platform's own controls do: they float on a gradient that fades up into the
19626
+ picture, dark enough to read them against a bright frame and gone entirely
19627
+ a little higher up. The picture runs edge to edge behind them. It has no
19628
+ name because it is the resting treatment.
19629
+
19630
+ `filled` gives the controls a bar of their own, which is what a video
19631
+ embedded in a document usually wants, where the player is a component on a
19632
+ page rather than the page itself. It stays put rather than fading, because
19633
+ a bar that is part of the frame would leave a strip of the well behind it.
19634
+
19635
+ `plain` is neither: the controls sit straight on the picture with nothing
19636
+ behind them. For a consumer who knows their footage, or who is putting
19637
+ their own ground there.
19638
+
19639
+ A presentation property, so it lives on this tier. The headless element renders
19640
+ the same bar for all three.
19641
+
19642
+ **Optional rather than defaulted, which is not a style preference.** A
19643
+ reflecting property with a default writes its attribute onto every host the
19644
+ moment the element upgrades, including the ones a consumer rendered and did
19645
+ not touch, and React reads that as a hydration mismatch. The absent
19646
+ attribute *is* the shadow, which the stylesheet reads as the base rule, so
19647
+ only the departure has to be named. */
19466
19648
  separation?: (HelixVideo["separation"]) | undefined;
19467
19649
  /** Whether it starts on its own, which a browser only allows while silent.
19468
19650
 
@@ -19711,7 +19893,35 @@ past the end is the one write the platform answers with an exception. */
19711
19893
  };
19712
19894
 
19713
19895
  export type HelixVideoSolidJsProps = {
19714
- /** Whether the bar floats on the picture or sits on its own ground. */
19896
+ /** How the control bar sits on the picture.
19897
+
19898
+ `separation` and not `emphasis`: all three states say what the bar sits on,
19899
+ which is where it separates from the picture, rather than how loud it is.
19900
+
19901
+ Absent is the default and is what a player looks like, and what the
19902
+ platform's own controls do: they float on a gradient that fades up into the
19903
+ picture, dark enough to read them against a bright frame and gone entirely
19904
+ a little higher up. The picture runs edge to edge behind them. It has no
19905
+ name because it is the resting treatment.
19906
+
19907
+ `filled` gives the controls a bar of their own, which is what a video
19908
+ embedded in a document usually wants, where the player is a component on a
19909
+ page rather than the page itself. It stays put rather than fading, because
19910
+ a bar that is part of the frame would leave a strip of the well behind it.
19911
+
19912
+ `plain` is neither: the controls sit straight on the picture with nothing
19913
+ behind them. For a consumer who knows their footage, or who is putting
19914
+ their own ground there.
19915
+
19916
+ A presentation property, so it lives on this tier. The headless element renders
19917
+ the same bar for all three.
19918
+
19919
+ **Optional rather than defaulted, which is not a style preference.** A
19920
+ reflecting property with a default writes its attribute onto every host the
19921
+ moment the element upgrades, including the ones a consumer rendered and did
19922
+ not touch, and React reads that as a hydration mismatch. The absent
19923
+ attribute *is* the shadow, which the stylesheet reads as the base rule, so
19924
+ only the departure has to be named. */
19715
19925
  "prop:separation"?: (HelixVideo["separation"]) | undefined;
19716
19926
  /** Whether it starts on its own, which a browser only allows while silent.
19717
19927
 
@@ -20779,13 +20989,17 @@ export type CustomElements = {
20779
20989
  * exaggerating, and a streak whose length has passed through zero is drawn
20780
20990
  * as a bar across the whole frame.
20781
20991
  *
20782
- * Read by the shapes made of many similar things, whether those are counted
20783
- * or continuous: `streaks`, whose lanes draw a speed, a length, a width, a
20784
- * spacing and a weight apiece; `particles`, whose motes draw a size, a
20785
- * brightness and a wander; and `rays` and `aurora`, whose fan, bundles and
20786
- * folds widen or even out. `braid`, `waves` and `flow` have a
20787
- * single subject and nothing to vary, and `threads` is even on purpose, so on
20788
- * those four this is inert.
20992
+ * Read by four of the eleven shapes, the ones made of many similar things,
20993
+ * whether those are counted or continuous: `streaks`, whose lanes draw a
20994
+ * speed, a length, a width, a spacing and a weight apiece; `particles`, whose
20995
+ * motes draw a size, a brightness and a wander; and `rays` and `aurora`, whose
20996
+ * fan, bundles and folds widen or even out.
20997
+ *
20998
+ * Inert on the other seven, for three different reasons. `braid`, `waves` and
20999
+ * `flow` have a single subject and nothing to vary. `threads` and `lattice`
21000
+ * are even on purpose, a scatter of strands and a regular structure each being
21001
+ * what it is because its members do not differ. `caustics` and `fracture` are
21002
+ * populations this does not reach, which is a gap rather than a refusal.
20789
21003
  * - `variant`: Which form the light takes. Absent is `braid`.
20790
21004
  *
20791
21005
  * Reflected because the fallback gradient selects on it, and given no default
@@ -21656,6 +21870,14 @@ export type CustomElements = {
21656
21870
  * Component attributes and properties that can be applied to the element or by using JavaScript.
21657
21871
  *
21658
21872
  * - `variant`: Whether the buttons are one bar or a spaced row.
21873
+ *
21874
+ * Joined by default: one control made of parts, sharing borders, reading as a
21875
+ * segmented bar.
21876
+ *
21877
+ * `spaced` is the same set with air between them, for a row of related but
21878
+ * separate actions. The semantics and the joining are separate questions:
21879
+ * `role="group"` and a shared name are what make a set of buttons a set, and
21880
+ * `helix-flex` gives the spacing without the group.
21659
21881
  * - `label`: Accessible name for the group.
21660
21882
  *
21661
21883
  * On the host through internals, so an author's `aria-label` still overrides
@@ -22372,7 +22594,7 @@ export type CustomElements = {
22372
22594
  *
22373
22595
  * Events that will be emitted by the component.
22374
22596
  *
22375
- * - `helix-select`: Fired when the slide in view changes, with its index. Cancelable: refusing it takes the decision and nothing moves.
22597
+ * - `helix-select`: Fired when the slide in view changes, with its index. Cancelable where the carousel is about to move: refusing a control or an indicator takes the decision and nothing moves. A drag has already moved the track, so that one announces after the fact and refusing it does nothing. See `handleScroll`.
22376
22598
  *
22377
22599
  * ## Slots
22378
22600
  *
@@ -25132,9 +25354,12 @@ export type CustomElements = {
25132
25354
  * difference is the space between days, which belongs to the track rather than
25133
25355
  * to a `gap`, so a range can paint across the whole track and stay continuous.
25134
25356
  *
25135
- * Days from the neighboring months stay in place and stay selectable, marked
25136
- * quieter rather than hidden, so the first and last weeks are whole and the
25137
- * grid reads as a continuous run of dates.
25357
+ * Days from the neighboring months stay in place, marked quieter rather than
25358
+ * hidden, so the first and last weeks are whole rows rather than ragged ones.
25359
+ * They are filler and take no click, which the pointer says: no hover, and the
25360
+ * cursor a box that does nothing has. At `months="2"` the same date is a
25361
+ * trailing cell in one grid and a real one in the next, so a filler day that
25362
+ * could be chosen would put one answer on the page twice.
25138
25363
  *
25139
25364
  * ## Attributes & Properties
25140
25365
  *
@@ -25542,8 +25767,35 @@ export type CustomElements = {
25542
25767
  *
25543
25768
  * Component attributes and properties that can be applied to the element or by using JavaScript.
25544
25769
  *
25545
- * - `align`: Whether the panel's contents run from the start or center on it.
25770
+ * - `align`: Which way the panel's contents read.
25771
+ *
25772
+ * One property for the whole panel rather than one per region. The regions are
25773
+ * never mixed in practice: a dialog that asks a short question centers its
25774
+ * mark, its title, its sentence and its buttons together, and a dialog holding
25775
+ * a form runs all four from the start. Three properties would be three ways to
25776
+ * write the same two arrangements, and a fourth way to get one of them wrong.
25777
+ *
25778
+ * Unset is `start` and stays unset, so a reflected default cannot appear on a
25779
+ * host whose server output never had it.
25546
25780
  * - `size`: How wide the panel is allowed to be.
25781
+ *
25782
+ * Steps rather than a number, because a dialog's width is a fact about what is
25783
+ * in it: a confirmation is narrow, a form is not, and picking pixels per
25784
+ * dialog is how a product ends up with nine of them. `full` takes the viewport
25785
+ * less the same inset every step already stops short by, so a takeover is one
25786
+ * more rung and not a second property.
25787
+ *
25788
+ * Unset is `md`, read as `:host(:not([size]))` beside `:host([size="md"])`
25789
+ * rather than assigned here, for the reason `Drawer.placement` gives: this
25790
+ * reflects, and a default would put `size="md"` into markup no consumer wrote.
25791
+ *
25792
+ * `size` is right despite the rule that controls have no size, because that
25793
+ * rule's own test is whether two of them sitting together could legitimately
25794
+ * differ, and it is answering "a ragged row is unwritable". Two dialogs never
25795
+ * sit together. One is on screen at a time, in the top layer, and it is the
25796
+ * region rather than a control in one, which is the same reason `Avatar` and
25797
+ * `Spinner` keep theirs. Not `appearance`, which says how a thing reads
25798
+ * rather than how wide it is.
25547
25799
  * - `open`: Whether the element is open.
25548
25800
  *
25549
25801
  * One property, not two, so `dialog.open` answers the question anyone
@@ -31036,15 +31288,27 @@ export type CustomElements = {
31036
31288
  *
31037
31289
  * `<option selected>` reflects to `defaultSelected` and `option.selected` is
31038
31290
  * live state that does not reflect, and those are two different facts. This
31039
- * element has one `selected` doing both jobs, so what is captured here is what
31040
- * the markup said at upgrade, before anything could overwrite it: read the
31041
- * attribute later and the listbox's own writes answer instead.
31042
- *
31043
- * **The deeper half is 302 and is not this.** State reflecting under the
31044
- * declaration's name is the fault `TreeItem` already avoids by mirroring to
31045
- * `data-selected`, and four families here still write `selected` back into a
31046
- * consumer's markup. Splitting them means moving what every stylesheet selects
31047
- * on, which is a change of its own rather than a property being added. (property only)
31291
+ * element has one `selected` doing both jobs, so the declaration is the
31292
+ * attribute and the state is the property.
31293
+ *
31294
+ * **The attribute, read when it is asked for, and never a snapshot taken in
31295
+ * the constructor.** A field initializer runs there, and an element the HTML
31296
+ * parser created has none of its attributes yet at that moment: measured on
31297
+ * this element, on `Radio` and on `Toggle`, `<helix-option value="a"
31298
+ * selected>` reported `defaultSelected` as `false` both from parsed markup
31299
+ * and from `createElement` followed by `setAttribute`, which is every way a
31300
+ * consumer writes one. The snapshot could only ever be true for an element
31301
+ * already in the document when `customElements.define` ran.
31302
+ *
31303
+ * Nothing overwrites it either, which is what makes reading it late correct
31304
+ * rather than merely later: `selected` does not reflect, for the reason
31305
+ * `willUpdate` records, so the listbox's writes never reach the attribute and
31306
+ * what it says is what the markup said.
31307
+ *
31308
+ * **The deeper half is not this.** State reflecting under the declaration's
31309
+ * name is the fault `TreeItem` avoids by mirroring to `data-selected`.
31310
+ * Splitting them means moving what every stylesheet selects on, which is a
31311
+ * change of its own rather than a property being added. (property only)
31048
31312
  * - `text`: The words, for a listbox that has to match text against them.
31049
31313
  *
31050
31314
  * Read from the rendered content rather than required as a property, because
@@ -32542,9 +32806,22 @@ export type CustomElements = {
32542
32806
  *
32543
32807
  * `<option selected>` reflects to `defaultSelected` and `option.selected` is
32544
32808
  * live state that does not reflect, and those are two different facts. This
32545
- * element has one `selected` doing both jobs, so what is captured here is what
32546
- * the markup said at upgrade, before anything could overwrite it: read the
32547
- * attribute later and the listbox's own writes answer instead.
32809
+ * element has one `selected` doing both jobs, so the declaration is the
32810
+ * attribute and the state is the property.
32811
+ *
32812
+ * **The attribute, read when it is asked for, and never a snapshot taken in
32813
+ * the constructor.** A field initializer runs there, and an element the HTML
32814
+ * parser created has none of its attributes yet at that moment: measured on
32815
+ * this element, on `Option` and on `Toggle`, `<helix-radio value="a"
32816
+ * selected>` reported `defaultSelected` as `false` both from parsed markup
32817
+ * and from `createElement` followed by `setAttribute`, which is every way a
32818
+ * consumer writes one. The snapshot could only ever be true for an element
32819
+ * already in the document when `customElements.define` ran.
32820
+ *
32821
+ * Nothing overwrites it either, which is what makes reading it late correct
32822
+ * rather than merely later: `selected` does not reflect, for the reason
32823
+ * `willUpdate` records, so the group's writes never reach the attribute and
32824
+ * what it says is what the markup said.
32548
32825
  *
32549
32826
  * **The deeper half is not this.** State reflecting under the declaration's
32550
32827
  * name is the fault `TreeItem` avoids by mirroring to `data-selected`.
@@ -34226,9 +34503,9 @@ export type CustomElements = {
34226
34503
  * - `--slider-track-image`: The whole track, for a slider whose color is the value. (default: `undefined`)
34227
34504
  * - `--slider-track-size`: How thick the track is. The progress bar's own size by default, the two being the same object. (default: `undefined`)
34228
34505
  * - `--slider-fraction`: The value as a fraction of the range, 0 to 1. (default: `undefined`)
34229
- * - `--slider-from`: Where the filled span starts, as a percentage of the track. (default: `undefined`)
34506
+ * - `--slider-from`: Where a range's filled span starts, as a fraction of the track, 0 to 1. (default: `undefined`)
34230
34507
  * - `--slider-marker-at`: Where one marker sits, as a percentage of the track. (default: `undefined`)
34231
- * - `--slider-to`: Where the filled span ends, as a percentage of the track. (default: `undefined`)
34508
+ * - `--slider-to`: Where a range's filled span ends, as a fraction of the track, 0 to 1. (default: `undefined`)
34232
34509
  *
34233
34510
  * ## CSS Parts
34234
34511
  *
@@ -37416,6 +37693,8 @@ export type CustomElements = {
37416
37693
  * Areas where markup can be added to the component.
37417
37694
  *
37418
37695
  * - `(default)`: The group's items.
37696
+ * - `end`: Whatever sits after the track on its own line, such as a count or a reset.
37697
+ * - `start`: Whatever sits before the track on its own line, such as an icon or a caption.
37419
37698
  *
37420
37699
  * ## Methods
37421
37700
  *
@@ -37517,9 +37796,22 @@ export type CustomElements = {
37517
37796
  *
37518
37797
  * `<option selected>` reflects to `defaultSelected` and `option.selected` is
37519
37798
  * live state that does not reflect, and those are two different facts. This
37520
- * element has one `selected` doing both jobs, so what is captured here is what
37521
- * the markup said at upgrade, before anything could overwrite it: read the
37522
- * attribute later and the listbox's own writes answer instead.
37799
+ * element has one `selected` doing both jobs, so the declaration is the
37800
+ * attribute and the state is the property.
37801
+ *
37802
+ * **The attribute, read when it is asked for, and never a snapshot taken in
37803
+ * the constructor.** A field initializer runs there, and an element the HTML
37804
+ * parser created has none of its attributes yet at that moment: measured on
37805
+ * this element, on `Option` and on `Radio`, `<helix-toggle value="light"
37806
+ * selected>` reported `defaultSelected` as `false` both from parsed markup
37807
+ * and from `createElement` followed by `setAttribute`, which is every way a
37808
+ * consumer writes one. The snapshot could only ever be true for an element
37809
+ * already in the document when `customElements.define` ran.
37810
+ *
37811
+ * Nothing overwrites it either, which is what makes reading it late correct
37812
+ * rather than merely later: `selected` does not reflect, for the reason
37813
+ * `willUpdate` records, so the group's writes never reach the attribute and
37814
+ * what it says is what the markup said.
37523
37815
  *
37524
37816
  * **The deeper half is not this.** State reflecting under the declaration's
37525
37817
  * name is the fault `TreeItem` avoids by mirroring to `data-selected`.
@@ -37580,7 +37872,7 @@ export type CustomElements = {
37580
37872
  *
37581
37873
  * Custom selectors for styling elements within the component.
37582
37874
  *
37583
- * - `item`: The button or anchor.
37875
+ * - `item`: The radio button.
37584
37876
  *
37585
37877
  * ## CSS States
37586
37878
  *
@@ -38774,7 +39066,35 @@ export type CustomElements = {
38774
39066
  *
38775
39067
  * Component attributes and properties that can be applied to the element or by using JavaScript.
38776
39068
  *
38777
- * - `separation`: Whether the bar floats on the picture or sits on its own ground.
39069
+ * - `separation`: How the control bar sits on the picture.
39070
+ *
39071
+ * `separation` and not `emphasis`: all three states say what the bar sits on,
39072
+ * which is where it separates from the picture, rather than how loud it is.
39073
+ *
39074
+ * Absent is the default and is what a player looks like, and what the
39075
+ * platform's own controls do: they float on a gradient that fades up into the
39076
+ * picture, dark enough to read them against a bright frame and gone entirely
39077
+ * a little higher up. The picture runs edge to edge behind them. It has no
39078
+ * name because it is the resting treatment.
39079
+ *
39080
+ * `filled` gives the controls a bar of their own, which is what a video
39081
+ * embedded in a document usually wants, where the player is a component on a
39082
+ * page rather than the page itself. It stays put rather than fading, because
39083
+ * a bar that is part of the frame would leave a strip of the well behind it.
39084
+ *
39085
+ * `plain` is neither: the controls sit straight on the picture with nothing
39086
+ * behind them. For a consumer who knows their footage, or who is putting
39087
+ * their own ground there.
39088
+ *
39089
+ * A presentation property, so it lives on this tier. The headless element renders
39090
+ * the same bar for all three.
39091
+ *
39092
+ * **Optional rather than defaulted, which is not a style preference.** A
39093
+ * reflecting property with a default writes its attribute onto every host the
39094
+ * moment the element upgrades, including the ones a consumer rendered and did
39095
+ * not touch, and React reads that as a hydration mismatch. The absent
39096
+ * attribute *is* the shadow, which the stylesheet reads as the base rule, so
39097
+ * only the departure has to be named.
38778
39098
  * - `autoplay`: Whether it starts on its own, which a browser only allows while silent.
38779
39099
  *
38780
39100
  * Forwarded rather than acted on. Whether an unprompted play is permitted is
@@ -39899,13 +40219,17 @@ export type CustomElementsSolidJs = {
39899
40219
  * exaggerating, and a streak whose length has passed through zero is drawn
39900
40220
  * as a bar across the whole frame.
39901
40221
  *
39902
- * Read by the shapes made of many similar things, whether those are counted
39903
- * or continuous: `streaks`, whose lanes draw a speed, a length, a width, a
39904
- * spacing and a weight apiece; `particles`, whose motes draw a size, a
39905
- * brightness and a wander; and `rays` and `aurora`, whose fan, bundles and
39906
- * folds widen or even out. `braid`, `waves` and `flow` have a
39907
- * single subject and nothing to vary, and `threads` is even on purpose, so on
39908
- * those four this is inert.
40222
+ * Read by four of the eleven shapes, the ones made of many similar things,
40223
+ * whether those are counted or continuous: `streaks`, whose lanes draw a
40224
+ * speed, a length, a width, a spacing and a weight apiece; `particles`, whose
40225
+ * motes draw a size, a brightness and a wander; and `rays` and `aurora`, whose
40226
+ * fan, bundles and folds widen or even out.
40227
+ *
40228
+ * Inert on the other seven, for three different reasons. `braid`, `waves` and
40229
+ * `flow` have a single subject and nothing to vary. `threads` and `lattice`
40230
+ * are even on purpose, a scatter of strands and a regular structure each being
40231
+ * what it is because its members do not differ. `caustics` and `fracture` are
40232
+ * populations this does not reach, which is a gap rather than a refusal.
39909
40233
  * - `variant`: Which form the light takes. Absent is `braid`.
39910
40234
  *
39911
40235
  * Reflected because the fallback gradient selects on it, and given no default
@@ -40801,6 +41125,14 @@ export type CustomElementsSolidJs = {
40801
41125
  * Component attributes and properties that can be applied to the element or by using JavaScript.
40802
41126
  *
40803
41127
  * - `variant`: Whether the buttons are one bar or a spaced row.
41128
+ *
41129
+ * Joined by default: one control made of parts, sharing borders, reading as a
41130
+ * segmented bar.
41131
+ *
41132
+ * `spaced` is the same set with air between them, for a row of related but
41133
+ * separate actions. The semantics and the joining are separate questions:
41134
+ * `role="group"` and a shared name are what make a set of buttons a set, and
41135
+ * `helix-flex` gives the spacing without the group.
40804
41136
  * - `label`: Accessible name for the group.
40805
41137
  *
40806
41138
  * On the host through internals, so an author's `aria-label` still overrides
@@ -41528,7 +41860,7 @@ export type CustomElementsSolidJs = {
41528
41860
  *
41529
41861
  * Events that will be emitted by the component.
41530
41862
  *
41531
- * - `helix-select`: Fired when the slide in view changes, with its index. Cancelable: refusing it takes the decision and nothing moves.
41863
+ * - `helix-select`: Fired when the slide in view changes, with its index. Cancelable where the carousel is about to move: refusing a control or an indicator takes the decision and nothing moves. A drag has already moved the track, so that one announces after the fact and refusing it does nothing. See `handleScroll`.
41532
41864
  *
41533
41865
  * ## Slots
41534
41866
  *
@@ -44331,9 +44663,12 @@ export type CustomElementsSolidJs = {
44331
44663
  * difference is the space between days, which belongs to the track rather than
44332
44664
  * to a `gap`, so a range can paint across the whole track and stay continuous.
44333
44665
  *
44334
- * Days from the neighboring months stay in place and stay selectable, marked
44335
- * quieter rather than hidden, so the first and last weeks are whole and the
44336
- * grid reads as a continuous run of dates.
44666
+ * Days from the neighboring months stay in place, marked quieter rather than
44667
+ * hidden, so the first and last weeks are whole rows rather than ragged ones.
44668
+ * They are filler and take no click, which the pointer says: no hover, and the
44669
+ * cursor a box that does nothing has. At `months="2"` the same date is a
44670
+ * trailing cell in one grid and a real one in the next, so a filler day that
44671
+ * could be chosen would put one answer on the page twice.
44337
44672
  *
44338
44673
  * ## Attributes & Properties
44339
44674
  *
@@ -44748,8 +45083,35 @@ export type CustomElementsSolidJs = {
44748
45083
  *
44749
45084
  * Component attributes and properties that can be applied to the element or by using JavaScript.
44750
45085
  *
44751
- * - `align`: Whether the panel's contents run from the start or center on it.
45086
+ * - `align`: Which way the panel's contents read.
45087
+ *
45088
+ * One property for the whole panel rather than one per region. The regions are
45089
+ * never mixed in practice: a dialog that asks a short question centers its
45090
+ * mark, its title, its sentence and its buttons together, and a dialog holding
45091
+ * a form runs all four from the start. Three properties would be three ways to
45092
+ * write the same two arrangements, and a fourth way to get one of them wrong.
45093
+ *
45094
+ * Unset is `start` and stays unset, so a reflected default cannot appear on a
45095
+ * host whose server output never had it.
44752
45096
  * - `size`: How wide the panel is allowed to be.
45097
+ *
45098
+ * Steps rather than a number, because a dialog's width is a fact about what is
45099
+ * in it: a confirmation is narrow, a form is not, and picking pixels per
45100
+ * dialog is how a product ends up with nine of them. `full` takes the viewport
45101
+ * less the same inset every step already stops short by, so a takeover is one
45102
+ * more rung and not a second property.
45103
+ *
45104
+ * Unset is `md`, read as `:host(:not([size]))` beside `:host([size="md"])`
45105
+ * rather than assigned here, for the reason `Drawer.placement` gives: this
45106
+ * reflects, and a default would put `size="md"` into markup no consumer wrote.
45107
+ *
45108
+ * `size` is right despite the rule that controls have no size, because that
45109
+ * rule's own test is whether two of them sitting together could legitimately
45110
+ * differ, and it is answering "a ragged row is unwritable". Two dialogs never
45111
+ * sit together. One is on screen at a time, in the top layer, and it is the
45112
+ * region rather than a control in one, which is the same reason `Avatar` and
45113
+ * `Spinner` keep theirs. Not `appearance`, which says how a thing reads
45114
+ * rather than how wide it is.
44753
45115
  * - `open`: Whether the element is open.
44754
45116
  *
44755
45117
  * One property, not two, so `dialog.open` answers the question anyone
@@ -50361,15 +50723,27 @@ export type CustomElementsSolidJs = {
50361
50723
  *
50362
50724
  * `<option selected>` reflects to `defaultSelected` and `option.selected` is
50363
50725
  * live state that does not reflect, and those are two different facts. This
50364
- * element has one `selected` doing both jobs, so what is captured here is what
50365
- * the markup said at upgrade, before anything could overwrite it: read the
50366
- * attribute later and the listbox's own writes answer instead.
50367
- *
50368
- * **The deeper half is 302 and is not this.** State reflecting under the
50369
- * declaration's name is the fault `TreeItem` already avoids by mirroring to
50370
- * `data-selected`, and four families here still write `selected` back into a
50371
- * consumer's markup. Splitting them means moving what every stylesheet selects
50372
- * on, which is a change of its own rather than a property being added. (property only)
50726
+ * element has one `selected` doing both jobs, so the declaration is the
50727
+ * attribute and the state is the property.
50728
+ *
50729
+ * **The attribute, read when it is asked for, and never a snapshot taken in
50730
+ * the constructor.** A field initializer runs there, and an element the HTML
50731
+ * parser created has none of its attributes yet at that moment: measured on
50732
+ * this element, on `Radio` and on `Toggle`, `<helix-option value="a"
50733
+ * selected>` reported `defaultSelected` as `false` both from parsed markup
50734
+ * and from `createElement` followed by `setAttribute`, which is every way a
50735
+ * consumer writes one. The snapshot could only ever be true for an element
50736
+ * already in the document when `customElements.define` ran.
50737
+ *
50738
+ * Nothing overwrites it either, which is what makes reading it late correct
50739
+ * rather than merely later: `selected` does not reflect, for the reason
50740
+ * `willUpdate` records, so the listbox's writes never reach the attribute and
50741
+ * what it says is what the markup said.
50742
+ *
50743
+ * **The deeper half is not this.** State reflecting under the declaration's
50744
+ * name is the fault `TreeItem` avoids by mirroring to `data-selected`.
50745
+ * Splitting them means moving what every stylesheet selects on, which is a
50746
+ * change of its own rather than a property being added. (property only)
50373
50747
  * - `text`: The words, for a listbox that has to match text against them.
50374
50748
  *
50375
50749
  * Read from the rendered content rather than required as a property, because
@@ -51904,9 +52278,22 @@ export type CustomElementsSolidJs = {
51904
52278
  *
51905
52279
  * `<option selected>` reflects to `defaultSelected` and `option.selected` is
51906
52280
  * live state that does not reflect, and those are two different facts. This
51907
- * element has one `selected` doing both jobs, so what is captured here is what
51908
- * the markup said at upgrade, before anything could overwrite it: read the
51909
- * attribute later and the listbox's own writes answer instead.
52281
+ * element has one `selected` doing both jobs, so the declaration is the
52282
+ * attribute and the state is the property.
52283
+ *
52284
+ * **The attribute, read when it is asked for, and never a snapshot taken in
52285
+ * the constructor.** A field initializer runs there, and an element the HTML
52286
+ * parser created has none of its attributes yet at that moment: measured on
52287
+ * this element, on `Option` and on `Toggle`, `<helix-radio value="a"
52288
+ * selected>` reported `defaultSelected` as `false` both from parsed markup
52289
+ * and from `createElement` followed by `setAttribute`, which is every way a
52290
+ * consumer writes one. The snapshot could only ever be true for an element
52291
+ * already in the document when `customElements.define` ran.
52292
+ *
52293
+ * Nothing overwrites it either, which is what makes reading it late correct
52294
+ * rather than merely later: `selected` does not reflect, for the reason
52295
+ * `willUpdate` records, so the group's writes never reach the attribute and
52296
+ * what it says is what the markup said.
51910
52297
  *
51911
52298
  * **The deeper half is not this.** State reflecting under the declaration's
51912
52299
  * name is the fault `TreeItem` avoids by mirroring to `data-selected`.
@@ -53629,9 +54016,9 @@ export type CustomElementsSolidJs = {
53629
54016
  * - `--slider-track-image`: The whole track, for a slider whose color is the value. (default: `undefined`)
53630
54017
  * - `--slider-track-size`: How thick the track is. The progress bar's own size by default, the two being the same object. (default: `undefined`)
53631
54018
  * - `--slider-fraction`: The value as a fraction of the range, 0 to 1. (default: `undefined`)
53632
- * - `--slider-from`: Where the filled span starts, as a percentage of the track. (default: `undefined`)
54019
+ * - `--slider-from`: Where a range's filled span starts, as a fraction of the track, 0 to 1. (default: `undefined`)
53633
54020
  * - `--slider-marker-at`: Where one marker sits, as a percentage of the track. (default: `undefined`)
53634
- * - `--slider-to`: Where the filled span ends, as a percentage of the track. (default: `undefined`)
54021
+ * - `--slider-to`: Where a range's filled span ends, as a fraction of the track, 0 to 1. (default: `undefined`)
53635
54022
  *
53636
54023
  * ## CSS Parts
53637
54024
  *
@@ -56897,6 +57284,8 @@ export type CustomElementsSolidJs = {
56897
57284
  * Areas where markup can be added to the component.
56898
57285
  *
56899
57286
  * - `(default)`: The group's items.
57287
+ * - `end`: Whatever sits after the track on its own line, such as a count or a reset.
57288
+ * - `start`: Whatever sits before the track on its own line, such as an icon or a caption.
56900
57289
  *
56901
57290
  * ## Methods
56902
57291
  *
@@ -57001,9 +57390,22 @@ export type CustomElementsSolidJs = {
57001
57390
  *
57002
57391
  * `<option selected>` reflects to `defaultSelected` and `option.selected` is
57003
57392
  * live state that does not reflect, and those are two different facts. This
57004
- * element has one `selected` doing both jobs, so what is captured here is what
57005
- * the markup said at upgrade, before anything could overwrite it: read the
57006
- * attribute later and the listbox's own writes answer instead.
57393
+ * element has one `selected` doing both jobs, so the declaration is the
57394
+ * attribute and the state is the property.
57395
+ *
57396
+ * **The attribute, read when it is asked for, and never a snapshot taken in
57397
+ * the constructor.** A field initializer runs there, and an element the HTML
57398
+ * parser created has none of its attributes yet at that moment: measured on
57399
+ * this element, on `Option` and on `Radio`, `<helix-toggle value="light"
57400
+ * selected>` reported `defaultSelected` as `false` both from parsed markup
57401
+ * and from `createElement` followed by `setAttribute`, which is every way a
57402
+ * consumer writes one. The snapshot could only ever be true for an element
57403
+ * already in the document when `customElements.define` ran.
57404
+ *
57405
+ * Nothing overwrites it either, which is what makes reading it late correct
57406
+ * rather than merely later: `selected` does not reflect, for the reason
57407
+ * `willUpdate` records, so the group's writes never reach the attribute and
57408
+ * what it says is what the markup said.
57007
57409
  *
57008
57410
  * **The deeper half is not this.** State reflecting under the declaration's
57009
57411
  * name is the fault `TreeItem` avoids by mirroring to `data-selected`.
@@ -57064,7 +57466,7 @@ export type CustomElementsSolidJs = {
57064
57466
  *
57065
57467
  * Custom selectors for styling elements within the component.
57066
57468
  *
57067
- * - `item`: The button or anchor.
57469
+ * - `item`: The radio button.
57068
57470
  *
57069
57471
  * ## CSS States
57070
57472
  *
@@ -58291,7 +58693,35 @@ export type CustomElementsSolidJs = {
58291
58693
  *
58292
58694
  * Component attributes and properties that can be applied to the element or by using JavaScript.
58293
58695
  *
58294
- * - `separation`: Whether the bar floats on the picture or sits on its own ground.
58696
+ * - `separation`: How the control bar sits on the picture.
58697
+ *
58698
+ * `separation` and not `emphasis`: all three states say what the bar sits on,
58699
+ * which is where it separates from the picture, rather than how loud it is.
58700
+ *
58701
+ * Absent is the default and is what a player looks like, and what the
58702
+ * platform's own controls do: they float on a gradient that fades up into the
58703
+ * picture, dark enough to read them against a bright frame and gone entirely
58704
+ * a little higher up. The picture runs edge to edge behind them. It has no
58705
+ * name because it is the resting treatment.
58706
+ *
58707
+ * `filled` gives the controls a bar of their own, which is what a video
58708
+ * embedded in a document usually wants, where the player is a component on a
58709
+ * page rather than the page itself. It stays put rather than fading, because
58710
+ * a bar that is part of the frame would leave a strip of the well behind it.
58711
+ *
58712
+ * `plain` is neither: the controls sit straight on the picture with nothing
58713
+ * behind them. For a consumer who knows their footage, or who is putting
58714
+ * their own ground there.
58715
+ *
58716
+ * A presentation property, so it lives on this tier. The headless element renders
58717
+ * the same bar for all three.
58718
+ *
58719
+ * **Optional rather than defaulted, which is not a style preference.** A
58720
+ * reflecting property with a default writes its attribute onto every host the
58721
+ * moment the element upgrades, including the ones a consumer rendered and did
58722
+ * not touch, and React reads that as a hydration mismatch. The absent
58723
+ * attribute *is* the shadow, which the stylesheet reads as the base rule, so
58724
+ * only the departure has to be named.
58295
58725
  * - `autoplay`: Whether it starts on its own, which a browser only allows while silent.
58296
58726
  *
58297
58727
  * Forwarded rather than acted on. Whether an unprompted play is permitted is
@@ -59463,11 +59893,11 @@ export type CustomCssProperties = {
59463
59893
  "--slider-track-size"?: (string) | undefined;
59464
59894
  /** The value as a fraction of the range, 0 to 1. */
59465
59895
  "--slider-fraction"?: (string) | undefined;
59466
- /** Where the filled span starts, as a percentage of the track. */
59896
+ /** Where a range's filled span starts, as a fraction of the track, 0 to 1. */
59467
59897
  "--slider-from"?: (string) | undefined;
59468
59898
  /** Where one marker sits, as a percentage of the track. */
59469
59899
  "--slider-marker-at"?: (string) | undefined;
59470
- /** Where the filled span ends, as a percentage of the track. */
59900
+ /** Where a range's filled span ends, as a fraction of the track, 0 to 1. */
59471
59901
  "--slider-to"?: (string) | undefined;
59472
59902
  /** How much of the line's color the wash takes where it meets the line. */
59473
59903
  "--sparkline-area-opacity"?: (string) | undefined;